123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- #!/bin/bash
- #---------HEADER--------------------------------------------------------------|
- #DATA:
- # 01 dezembro 2017
- #AUTOR:
- # Jefferson Rocha <lrcjefferson@gmail.com>
- #
- #PROGRAMA:
- # Slocal - Manutenção de pacotes locais em rede.
- #
- #CHANGELOG:
- # (v1.0) 01/12/2017 - Jefferson rocha
- # - Lançamento
- #
- # (v1.1) 01/12/2017 - Jefferson Rocha
- # - Retirado bug do 'PACKAGE.TXT' que ficava na lista no select.
- # - Retirado opção 'install' em linha
- # - Adicionado opção de sincronizar pacotes.
- #
- #MODO DE USO:
- #
- #
- #-----------------------------------------------------------------------------|
- #-------CONFIGURAÇÕES-----#
- PROGRAMA="slocal v1.1 - 01/12/2017" # Nome e versão do programa
- diretorio="/var/www/htdocs/slackware14.2" # DIRETORIO DOS PACOTES no servidor
- URL="192.168.0.4/slackware14.2" # URL DO SERVIDOR
- sincronizar="/home/slackjeff/Downloads" # Local onde os novos pacotes ficam
- nome_do_hospedeiro="darkstar" # Nome do Hospedeiro
- root=$(id -u)
- #--------FUNÇÕES-----------#
- hospedeira(){
- PACOTES=$(ls "$diretorio" > $diretorio/PACKAGE.txt) # Listagem do pascotes
- }
- baixar_package_txt(){
- curl "$URL/PACKAGE.txt" > PACKAGE.txt
- mv PACKAGE.txt /tmp
- }
- #-------VERIFICAÇÕES INICIAIS-------#
- [ "$root" -ne "0" ] && echo "Favor logar como root." && exit 1 # É root?
- # Obtendo pacotes no diretorio raiz, máquina hospedeira.
- [ -d "$diretorio" ] && hospedeira # Chamada função hospedeira
- #-------INICIO-----------#
- # Menu principal
- while [ -n "$1" ]; do
- case $1 in
- update) baixar_package_txt ;; # Update do PACKAGE.txt
- # Opção sync apenas para máquina HOSPEDEIRA dos pacotes.
- sync)
- if [ "$nome_do_hospedeiro" = "$(echo $HOSTNAME)" ]; then
- cp $sincronizar/*.t?z "$diretorio" \
- && echo -e "\033[35;1mConcluido! Pacotes copiados para $diretorio\033[m"
- else
- echo -e "\033[31;1mSomente máquinas hospedeiras podem rodar este comando.\033[m"
- exit 1
- fi
- ;;
- search)
- shift
- grep "^$1" /tmp/PACKAGE.txt # procura, termos que comecem com a busca
- [ "$?" = "1" ] && echo -e "\033[31;1mPacote não encontrado, digite outro termo de busca.\033[m"
- ;;
- select) # Selecione e instale de uma vez!
- packs=$(cat "/tmp/PACKAGE.txt" | sed '/PACKAGE.txt/d')
- PS3=$'\033[34;1mSelecione um pacote para instalar: \033[m'
- select i in $packs "SAIR"; do
- [ "$i" = "SAIR" ] && exit 0
- wget -P "/tmp" "$URL/$i" 2>/dev/null && \
- upgradepkg --install-new "/tmp/$i"
- rm /tmp/${i:?echo "ERRO ao remover pacote do sistema."} # Var nula dá erro!
- done
- ;;
- help) cat << EOF
- Opções disponiveis no $PROGRAMA.
- ------------------------------------------------------------
- | search |
- Localiza em 'linha' um pacote no repositorio local.
- EXEMPLO:
- # slocal search [Bb]re.ze
- breeze-icons-5.28.0-noarch-1alien.txz
- ------------------------------------------------------------
- | sync |
- Sincroniza pacotes de um determinado diretorio para
- o servidor.
- Este comando só pode ser executado na máquina hospedeira.
- ------------------------------------------------------------
- | select |
- Menu principal para escolher e instalar um pacote.
- ------------------------------------------------------------
- | update |
- Faz update do arquivo PACKAGE.txt, é importante,
- executar esta opção sempre que for sincronizado novos pacotes,
- no servidor!
- ------------------------------------------------------------
- EOF
- ;;
- *) echo "Consulte slocal help para receber ajuda" ;;
- esac
- shift
- done
|