Get Tool
Publicado por Lucas Allan 27/01/2007
[ Hits: 5.535 ]
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
Faça download de vídeos do YouTube, convertendo para MPEG
Selecionar wallpaper no Fluxbox (baseado no Xdialog)
Script de compilação automatica do GCC
Nenhum comentário foi encontrado.
Instalar e Configurar o Slackware Linux em 2025
Como configurar os repositórios do apt no Debian 12 em 2025
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Configurando o Conky para iniciar corretamente no sistema
3 configurações básicas que podem melhorar muito a sua edição pelo editor nano
Como colorir os logs do terminal com ccze
Instalação Microsoft Edge no Linux Mint 22
Como configurar posicionamento e movimento de janelas no Lubuntu (Openbox) com atalhos de teclado
Criar entrada no GRUB para uma ISO Linux (8)
Discussão sobre monitoramento da integridade de arquivos (2)