Get Tool
Publicado por Lucas Allan 27/01/2007
[ Hits: 5.459 ]
O gtool é um simples script que serve para baixar e instalar pacotes no seu Slackware Linux. Por não usar apenas os mirrors oficiais, o gtool possui uma busca muito eficaz utilizando mirrors alternativos (linuxpackages.net).
;]
Espero que gostem!
#!/bin/sh # FUNCOES alternative() { versao=$( dialog --stdout --backtitle "$programaMSG" --title "Alternative" \ --radiolist "Choose the slackware version" 8 60 0 \ "11.0" "Packages for Slackware 11.0" OFF \ "10.2" "Packages for Slackware 11.0" OFF \ "10.1" "Packages for Slackware 11.0" OFF \ "10.0" "Packages for Slackware 11.0" OFF \ "all" "For all version" OFF ) valor=`echo $versao | wc -w` if [ $valor -lt 1 ]; then dialog --backtitle "$programaMSG" --title "Invalid Option" \ --infobox "You must choose an option from the list." 5 50 sleep 2 rm -f $linksArquivo return 1 fi busca=$( dialog --stdout --backtitle "$programaMSG" --title "Search"\ --inputbox "Enter the word to search" 8 60 ) valor=`echo $busca | wc -w` if [ $valor -lt 1 ]; then dialog --backtitle "$programaMSG" --title "Syntax Error" \ --infobox "The value must be just one word." 5 50 sleep 2 return 1 elif [ $valor -gt 1 ]; then dialog --backtitle "$programaMSG" --title "Syntax Error" \ --infobox "The value must be just one word." 5 50 sleep 2 return 1 fi if [ $versao = all ]; then url='http://www.linuxpackages.net/search_view.php?by=name&name='$busca'&ver=' else url='http://www.linuxpackages.net/search_view.php?by=name&name='$busca'&ver='$versao fi # arquivo temporario para armazenar a lista de packs listaArquivos=$TMP'/lista.'$$ # arquivo temporario para armazenar o log do Wget logWget=$TMP'/wget.'$$ dialog --backtitle "$programaMSG" --title "Search" \ --infobox "Updating list of packages..." 5 50 wget -x -o $logWget -O $listaArquivos $url valor=`cat "$logWget" | grep "Login incorrect"` rm -f $logWget valor=`echo $valor | wc -w` if [ $valor -gt 0 ]; then dialog --backtitle "$programaMSG" --title "Connection Error" \ --msgbox "Sorry, the maximum number of clients (32) from\ your class are already connected. Press any key. . ." 9 50 rm -f $listaArquivos return 1 fi resultado=`cat $listaArquivos | grep "\">Download<\/a>" | sed "s/\(.*\)\"\(.*\)\"\(.*\)/\2/"` rm -f $listaArquivos valor=`echo $resultado | wc -w` if [ $valor -lt 1 ]; then dialog --backtitle "$programaMSG" --title "Search Result"\ --msgbox "Package not found." 10 60 else linksArquivo=$TMP'/links.'$$ ( echo 'dialog --backtitle "$programaMSG" --title\ "Search Result : $valor files" --radiolist "Choose the package"\ 10 60 0 \' while [ $valor -gt 0 ]; do url=`echo $resultado | sed 's/\(\S*\)\s\(.*\)/\1/'` resultado=`echo $resultado | sed 's/\(\S*\)\s//'` pagina=`curl -s $url` nome=`echo $pagina | sed 's/\(.*\)file: \(\S*\)<br>\(.*\)/\2/'` tam=`echo $nome | wc -w` if [ $tam -gt 0 ]; then echo $nome '" " OFF \' echo $nome >> $linksArquivo echo $pagina | sed 's/\(.*\)<a href=\(\S*\)>HTTP<\(.*\)/\2/' >> $linksArquivo fi valor=`expr $valor '-' 1` done echo "2>$TMP/retorno.$$" ) > $TMP'/tela.$$' . $TMP'/tela.$$' rm -f $TMP'/tela.$$' opcao="`cat $TMP/retorno.$$`" rm -f $TMP'/retorno.$$' valor=`echo $opcao | wc -w` if [ $valor -lt 1 ]; then dialog --backtitle "$programaMSG" --title "Invalid Option" \ --infobox "You must choose an option from the list." 5 50 sleep 2 rm -f $linksArquivo return 1 fi tarefa=$( dialog --stdout --backtitle "$programaMSG" --title\ "Task" --radiolist "Choose an option"\ 10 60 0 "Download" "Download a package" OFF\ "Install" "Install a package" OFF\ "Exit" "Go back to the menu" OFF ) valor=`echo $tarefa | wc -w` if [ $valor -lt 1 ]; then dialog --backtitle "$programaMSG" --title "Invalid Option" \ --infobox "You must choose an option from the list." 5 50 sleep 2 rm -f $linksArquivo return 1 fi link=`cat $linksArquivo | grep $opcao | sed 's/\(^http:\)\(.*\)/\1\2/'` rm -f $linksArquivo if [ $tarefa = "Download" ]; then diretorio=$( dialog --stdout --backtitle "$programaMSG" --title "Download"\ --inputbox "Enter the destination directory" 8 60 "`pwd`") if [ ! -d $diretorio ]; then dialog --backtitle "$programaMSG" --title "Invalid Directory" \ --infobox "The following directory does not exist." 5 50 sleep 2 return 1 fi diretorio=$diretorio'/'$opcao dialog --backtitle "$programaMSG" --title "Download" \ --infobox "Downloading $opcao..." 5 50 sleep 1 wget -x -o $logWget -O $diretorio $link valor=`cat "$logWget" | grep "Login incorrect"` rm -f $logWget valor=`echo $valor | wc -w` if [ $valor -gt 0 ]; then dialog --backtitle "$programaMSG" --title "Connection Error" \ --msgbox "Sorry, the maximum number of clients (32) from\ your class are already connected. Press any key. . ." 9 50 return 1 fi dialog --backtitle "$programaMSG" --title "Download" \ --infobox "Download successful." 5 50 sleep 2 elif [ $tarefa = "Install" ]; then diretorio=$TMP'/'$opcao dialog --backtitle "$programaMSG" --title "Download" \ --infobox "Downloading $opcao..." 5 50 sleep 1 wget -x -o $logWget -O $diretorio $link valor=`cat "$logWget" | grep "Login incorrect"` rm -f $logWget valor=`echo $valor | wc -w` if [ $valor -gt 0 ]; then dialog --backtitle "$programaMSG" --title "Connection Error" \ --msgbox "Sorry, the maximum number of clients (32) from\ your class are already connected. Press any key. . ." 9 50 return 1 fi dialog --backtitle "$programaMSG" --title "Download" \ --infobox "Download successful." 5 50 sleep 1 dialog --backtitle "$programaMSG" --title "Install" \ --infobox "Installing package data..." 5 50 /sbin/installpkg $diretorio > /dev/null dialog --backtitle "$programaMSG" --title "Install" \ --infobox "Install successful." 5 50 sleep 1 rm -f $diretorio elif [ $tarefa = "Exit" ]; then return 1 fi fi return 0 } credits(){ dialog --msgbox "Credits: \n\n\n Roque Pinel <repinel[a]gmail.com \n\n Lucas Allan <lucas.allan[a]gmail.com\n\n www.got2think.org\n\n" 15 60 } search() { busca=$( dialog --stdout --backtitle "$programaMSG" --title "Search"\ --inputbox "Enter the word to search" 8 60 ) valor=`echo $busca | wc -w` if [ $valor -lt 1 ]; then dialog --backtitle "$programaMSG" --title "Syntax Error" \ --infobox "The value must be just one word." 5 50 sleep 2 return 1 elif [ $valor -gt 1 ]; then dialog --backtitle "$programaMSG" --title "Syntax Error" \ --infobox "The value must be just one word." 5 50 sleep 2 return 1 fi # arquivo temporario para armazenar a lista de packs listaArquivos=$TMP'/lista.'$$ # arquivo temporario para armazenar o log do Wget logWget=$TMP'/wget.'$$ dialog --backtitle "$programaMSG" --title "Search" \ --infobox "Updating list of packages..." 5 50 wget -x -o $logWget -O $listaArquivos ftp://ftp.slackware-brasil.com.br/slackware-current/FILELIST.TXT valor=`cat "$logWget" | grep "Login incorrect"` rm -f $logWget valor=`echo $valor | wc -w` if [ $valor -gt 0 ]; then dialog --backtitle "$programaMSG" --title "Connection Error 530" \ --msgbox "Sorry, the maximum number of clients (32) from\ your class are already connected. Press any key. . ." 9 50 rm -f $listaArquivos return 1 fi resultado=`cat $listaArquivos | grep -i $busca | grep -i 'tgz$' | sed "s/\(.*\)\($busca.*\)/\2/I"` rm -f $listaArquivos valor=`echo $resultado | wc -w` if [ $valor -lt 1 ]; then dialog --backtitle "$programaMSG" --title "Search Result"\ --msgbox "Package not found." 10 60 else dialog --backtitle "$programaMSG" --title "Search Result: $valor files"\ --msgbox "`echo $resultado | sed "s/\s/\n/g" | sort`" 10 60 fi return 0 } sizeof() { du -s "$1" | cut -f1; } running(){ ps $1 | grep $1 >/dev/null; } download() { busca=$( dialog --stdout --backtitle "$programaMSG" --title "Download"\ --inputbox "Enter the program name" 8 60 ) valor=`echo $busca | wc -w` if [ $valor -lt 1 ]; then dialog --backtitle "$programaMSG" --title "Syntax Error" \ --infobox "The value must be just one word." 5 50 sleep 2 return 1 elif [ $valor -gt 1 ]; then dialog --backtitle "$programaMSG" --title "Syntax Error" \ --infobox "The value must be just one word." 5 50 sleep 2 return 1 fi # arquivo temporario para armazenar a lista de packs listaArquivos=$TMP'/lista.'$$ # arquivo temporario para armazenar o log do Wget logWget=$TMP'/wget.'$$ dialog --backtitle "$programaMSG" --title "Search" \ --infobox "Updating list of packages..." 5 50 wget -x -o $logWget -O $listaArquivos ftp://ftp.slackware-brasil.com.br/slackware-current/FILELIST.TXT valor=`cat "$logWget" | grep "Login incorrect"` rm -f $logWget valor=`echo $valor | wc -w` if [ $valor -gt 0 ]; then dialog --backtitle "$programaMSG" --title "Connection Error 530" \ --msgbox "Sorry, the maximum number of clients (32) from\ your class are already connected. Press any key. . ." 9 50 rm -f $listaArquivos return 1 fi resultado=`cat $listaArquivos | grep -i $busca | grep -i 'tgz$' | sed "s/\(.*\)\($busca.*\)/\2/I"` valor=`echo $resultado | wc -w` if [ $valor -lt 1 ]; then dialog --backtitle "$programaMSG" --title "Search Result"\ --msgbox "Package not found." 10 60 rm -f $listaArquivos else ( echo 'dialog --backtitle "$programaMSG" --title\ "Search Result : $valor files" --radiolist "Choose the package"\ 10 60 0 \' echo $resultado | sed 's/ / " " OFF /g;s/\(.$\)/\1 " " OFF \\/g' echo "2>$TMP/retorno.$$" ) > $TMP'/tela.$$' . $TMP'/tela.$$' rm -f $TMP'/tela.$$' opcao="`cat $TMP/retorno.$$`" rm -f '$TMP/retorno.$$' valor=`echo $opcao | wc -w` if [ $valor -lt 1 ]; then dialog --backtitle "$programaMSG" --title "Invalid Option" \ --infobox "You must choose an option from the list." 5 50 sleep 2 rm -f $listaArquivos return 1 fi diretorio=$( dialog --stdout --backtitle "$programaMSG" --title "Download"\ --inputbox "Enter the destination directory" 8 60 "`pwd`") if [ ! -d $diretorio ]; then dialog --backtitle "$programaMSG" --title "Invalid Directory" \ --infobox "The following directory does not exist." 5 50 sleep 2 rm -f $listaArquivos return 1 fi urlArquivo=`cat $listaArquivos | grep -i $opcao | grep -i 'tgz$' | sed "s/\(.*\)\(\.\/.*\)/\2/I" | sed "s/\.\///"` TOTAL=`cat $listaArquivos | grep -i $opcao | grep -i 'tgz$' | sed "s/\(.*\)root\( *\)\([0-9]*\)\(.*\)/\3/"` rm -f $listaArquivos diretorio=$diretorio'/'$opcao wget -x -o $logWget -O $diretorio ftp://ftp.slackware-brasil.com.br/slackware-current/$urlArquivo & ### barra de progresso para download INICIO CPPID=$! valor=`cat "$logWget" | grep "Login incorrect"` rm -f $logWget valor=`echo $valor | wc -w` if [ $valor -gt 0 ]; then dialog --backtitle "$programaMSG" --title "Connection Error 530" \ --msgbox "Sorry, the maximum number of clients (32) from\ your class are already connected. Press any key. . ." 9 50 return 1 fi TOTAL=`expr $TOTAL '/' 1024` EXP=0 # caso o usuário cancele, interrompe a cópia trap "kill $CPPID" 2 15 # loop de checagem de status da cópia ( # enquanto o processo de cópia estiver rodando while running $CPPID; do # quanto já foi copiado? COPIADO=$(sizeof $diretorio) # qual a porcentagem do total? EXP=`expr $COPIADO '*' 100 '/' $TOTAL` # envia a porcentagem para o dialog echo "$EXP" # aguarda até a próxima checagem sleep $INTERVALO done # cópia finalizada, mostra a porcentagem final echo 100 ) | dialog --backtitle "$programaMSG" --title "Download..."\ --gauge "Downloading $opcao" 8 40 0 ### barra de progresso para download FIM fi return 0 } install() { busca=$( dialog --stdout --backtitle "$programaMSG" --title "Install"\ --inputbox "Enter the program name" 8 60 ) valor=`echo $busca | wc -w` if [ $valor -lt 1 ]; then dialog --backtitle "$programaMSG" --title "Syntax Error" \ --infobox "The value must be just one word." 5 50 sleep 2 return 1 elif [ $valor -gt 1 ]; then dialog --backtitle "$programaMSG" --title "Syntax Error" \ --infobox "The value must be just one word." 5 50 sleep 2 return 1 fi # arquivo temporario para armazenar a lista de packs listaArquivos=$TMP'/lista.'$$ listaArquivos='./FILELIST.TXT' # arquivo temporario para armazenar o log do Wget logWget=$TMP'/wget.'$$ dialog --backtitle "$programaMSG" --title "Search" \ --infobox "Updating list of packages..." 5 50 wget -x -o $logWget -O $listaArquivos ftp://ftp.slackware-brasil.com.br/slackware-current/FILELIST.TXT valor=`cat "$logWget" | grep "Login incorrect"` rm -f $logWget valor=`echo $valor | wc -w` if [ $valor -gt 0 ]; then rm -f $listaArquivos dialog --backtitle "$programaMSG" --title "Connection Error 530" \ --msgbox "Sorry, the maximum number of clients (32) from\ your class are already connected. Press any key. . ." 9 50 return 1 fi resultado=`cat $listaArquivos | grep -i $busca | grep -i 'tgz$' | sed "s/\(.*\)\($busca.*\)/\2/I"` valor=`echo $resultado | wc -w` if [ $valor -lt 1 ]; then dialog --backtitle "$programaMSG" --title "Search Result"\ --msgbox "Package not found." 10 60 else ( echo 'dialog --backtitle "$programaMSG" --title\ "Search Result : $valor files" --radiolist "Choose the package"\ 10 60 0 \' echo $resultado | sed 's/ / " " OFF /g;s/\(.$\)/\1 " " OFF \\/g' echo "2>$TMP/retorno.$$" ) > $TMP'/tela.$$' . $TMP'/tela.$$' rm -f $TMP'/tela.$$' opcao="`cat $TMP/retorno.$$`" rm -f $TMP'/retorno.$$' valor=`echo $opcao | wc -w` if [ $valor -lt 1 ]; then dialog --backtitle "$programaMSG" --title "Invalid Option" \ --infobox "You must choose an option from the list." 5 50 sleep 2 rm -f $listaArquivos return 1 fi urlArquivo=`cat $listaArquivos | grep -i $opcao | grep -i 'tgz$' | sed "s/\(.*\)\(\.\/.*\)/\2/I" | sed "s/\.\///"` TOTAL=`cat $listaArquivos | grep -i $opcao | grep -i 'tgz$' | sed "s/\(.*\)root\( *\)\([0-9]*\)\(.*\)/\3/"` rm -f $listaArquivos diretorio=$TMP'/'$opcao wget -x -o $logWget -O $diretorio ftp://ftp.slackware-brasil.com.br/slackware-current/$urlArquivo & ### barra de progresso para download INICIO CPPID=$! valor=`cat "$logWget" | grep "Login incorrect"` rm -f $logWget valor=`echo $valor | wc -w` if [ $valor -gt 0 ]; then dialog --backtitle "$programaMSG" --title "Connection Error 530" \ --msgbox "Sorry, the maximum number of clients (32) from\ your class are already connected. Press any key. . ." 9 50 return 1 fi TOTAL=`expr $TOTAL '/' 1024` EXP=0 # caso o usuário cancele, interrompe a cópia trap "kill $CPPID" 2 15 # loop de checagem de status da cópia ( # enquanto o processo de cópia estiver rodando while running $CPPID; do # quanto já foi copiado? COPIADO=$(sizeof $diretorio) # qual a porcentagem do total? EXP=`expr $COPIADO '*' 100 '/' $TOTAL` # envia a porcentagem para o dialog echo "$EXP" # aguarda até a próxima checagem sleep $INTERVALO done # cópia finalizada, mostra a porcentagem final echo 100 ) | dialog --backtitle "$programaMSG" --title "Download..."\ --gauge "Downloading $opcao" 8 40 0 ### barra de progresso para download FIM dialog --backtitle "$programaMSG" --title "Install" \ --infobox "Installing package data..." 5 50 /sbin/installpkg $diretorio > /dev/null dialog --backtitle "$programaMSG" --title "Install" \ --infobox "Install successful." 5 50 sleep 1 rm -f $diretorio fi return 0 } # STARTING MAIN # titulo dialog programaMSG="Get Tool Program" # diretorio para arquivos temporarios TMP='/tmp' # tempo para atualizacao da barra de download INTERVALO=1 while [ 0 ]; do dialog --backtitle "$programaMSG" --title \ "Main Menu" --menu\ "Welcome to Get Tool Program"\ 8 60 0\ Download "Download the package" \ Install "Install the package" \ Search "Search for a package" \ Alternative "Search in alternative mirror" \ Credits "Credits"\ Exit "Exit program" 2>/tmp/menuitem.$$ if [ ! $? = 0 ]; then dialog --clear exit fi menuitem=`cat /tmp/menuitem.$$` rm -f /tmp/menuitem.$$ case $menuitem in Download) download ;; Install) install ;; Search) search ;; Alternative) alternative ;; Credits) credits;; Exit) dialog --clear; exit;; esac done dialog --clear exit #END OF THE SOURCE
Criar Password no boot de uma DebianLive
Backup Simples de tabela MYSQL
Nenhum comentário foi encontrado.
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Recuperar arquivos de HD em formato RAW usando Linux (0)
SysAdmin ou DevOps: Qual curso inicial pra essa área? (0)
Melhores Práticas de Nomenclatura: Pastas, Arquivos e Código (3)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta