Get Tool
Publicado por Lucas Allan 27/01/2007
[ Hits: 5.460 ]
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
Script de instalação para Firefox e Thunderbird - new release
Nenhum comentário foi encontrado.
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
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
Criando uma VPC na AWS via CLI
Multifuncional HP imprime mas não digitaliza
Dica básica para escrever um Artigo.
Como Exibir Imagens Aleatórias no Neofetch para Personalizar seu Terminal