Get Tool
Publicado por Lucas Allan 27/01/2007
[ Hits: 5.811 ]
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
Remover/Exibir Arquivo/Diretório de uma estrutura de diretórios
Colocar palavras em maiúsculas
ZFFmpeg - Conversor e editor de vídeos
Nenhum comentário foi encontrado.
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Opções secretas em tema do Cinnamon
Como mapear unidade de rede no Linux
Como quebrar senha usando john the ripper
Alguém pode me indicar um designer freelancer? [RESOLVIDO] (1)
Alguém já testou o novo COSMIC Desktop? O que achou? (4)
Não consigo instalar distro antiga no virtualbox nem direto no hd (29)
queria saber como posso alterar a frequencia do meu ryzen 2300u pro (3)









