msoliver
(usa Debian)
Enviado em 27/03/2019 - 20:24h
Göetia_0xFF escreveu:
msoliver escreveu:
Göetia_0xFF escreveu:
Não posso salvar isso aqui no pc do curso, logo, quero eternizar esse script por aqui.
#!/bin/bash
#Coding:joão fragoso
#Instala a multilib no slackware
function Instalar_multilib(){
URL="http://www.slackware.com/"
DIRETORIO_REMOTO="~alien/multilib/"
REGEX=( '[0-9]+SBo' '[0-9]+alien' '[0-9]+multilib' )
DIR="LIB32"
GET_FILES=$(which lftp)
PKG=$(which slackpkg)
UPG_PKG=$(which upgradepkg)
TEMPO=$(which sleep)
REBOOT=$(which reboot)
USUARIO_ATIVO=1
BLACKLIST="/etc/slackpkg/blacklist"
VERSAO_SLACKWARE=$VERSAO
mkdir $DIR
cd $DIR
case ${UID} in
0)
printf "[+] Criando blacklist em $BLACKLIST"
for (( count=0;count!=3;count++ )); do
echo "${REGEX[$count]}" >> "$BLACKLIST";
done
;;
*)
echo "[-] Retorne como root [-]" && exit;
;;
esac
if [ echo $($GET_FILES -d -c " open $URL; cd $DIRETORIO_REMOTO$VERSAO_SLACKWARE; mget * ") ]; then
$UPG_PKG --reinstall --install-new *.t?z;
fi
echo
echo "[+] PREPARANDO PARA O REBOOT [+]"
echo
for (( x=0;x<2;x++ )); do
printf '.';
$TEMPO 1
done
cd ../
rm -rf $DIR
if [ ${UID} -eq 0 ]; then
while [ $USUARIO_ATIVO ]; do
$REBOOT;
done
else {
`su -c 'reboot'`
}
fi
}
printf "[+] Instalar multilib ?(Y/N):"
read -t 20 INSTALAR_MULTILIB || INSTALAR_MULTILIB="Y"
if [ "$INSTALAR_MULTILIB" = 'Y' ] || [ "$INSTALAR_MULTILIB" = 'y' ]; then
printf "Versao do slackware(ex:14.2):" && read -t 20 VERSAO || VERSAO="14.2"
Instalar_multilib $VERSAO
elif [ "$INSTALAR_MUTILIB" = 'N' ] || [ "$INSTALAR_MULTILIB" = 'y' ]; then
exit
fi
Boa noite....
Sei que o script é seu, e vc faz como quiser.... Rsrsrs
Mas, sugiro umas melhorias....
Seguem:
#!/bin/bash
#Coding:joão fragoso
#Instala a multilib no slackware
function Instalar_multilib(){
URL="http://www.slackware.com/"
DIRETORIO_REMOTO="~alien/multilib/"
REGEX=( '[0-9]+SBo' '[0-9]+alien' '[0-9]+multilib' )
DIR="LIB32"
GET_FILES=$(which lftp)
PKG=$(which slackpkg)
UPG_PKG=$(which upgradepkg)
TEMPO=$(which sleep)
REBOOT=$(which reboot)
USUARIO_ATIVO=1
BLACKLIST="/etc/slackpkg/blacklist"
VERSAO_SLACKWARE=$VERSAO
mkdir $DIR
cd $DIR
case ${UID} in
0)
printf "[+] Criando blacklist em $BLACKLIST"
for (( count=0;count!=3;count++ )); do
echo "${REGEX[$count]}" >> "$BLACKLIST";
done
;;
*)
echo "[-] Retorne como root [-]" && exit;
;;
esac
if [ echo $($GET_FILES -d -c " open $URL; cd $DIRETORIO_REMOTO$VERSAO_SLACKWARE; mget * ") ]; then
$UPG_PKG --reinstall --install-new *.t?z;
fi
echo
echo "[+] PREPARANDO PARA O REBOOT [+]"
echo
for (( x=0;x<2;x++ )); do
printf '.';
$TEMPO 1
done
cd ../
rm -rf $DIR
if [ ${UID} -eq 0 ]; then
#Não entendi o laço abaixo.... Se é root, REBOOT... É isso?
#BASTARIA:
[ ${UID} -eq 0 ] && $REBOOT || `su -c 'reboot'`
#O que é desnecessário, já que tem uma "case" logo acima, obrigando a executar o script como root
#O teste do root, poderia ficar logo no inicio.... Antes da declaração das variáveis e criação de diretório....
while [ $USUARIO_ATIVO ]; do
$REBOOT;
done
else {
`su -c 'reboot'`
}
fi
}
#printf "[+] Instalar multilib ?(Y/N):"
#read -t 20 INSTALAR_MULTILIB || INSTALAR_MULTILIB="Y"
#Utilizei o "-p" do read, no lugar do printf acima
read -n1 -t20 -p "[+] Instalar multilib ?(Y/N): " || REPLY="Y"
#O teste abaixo, testa se é Y ou y
if [[ $REPLY =~ [Yy]$ ]];then
...
else
...
fi
#if [ "$INSTALAR_MULTILIB" = 'Y' ] || [ "$INSTALAR_MULTILIB" = 'y' ]; then
# printf "Versao do slackware(ex:14.2):" && read -t 20 VERSAO || VERSAO="14.2"
# Instalar_multilib $VERSAO
#
#elif [ "$INSTALAR_MUTILIB" = 'N' ] || [ "$INSTALAR_MULTILIB" = 'y' ]; then
#exit
#fi
OBS: Entenda como "critica construtiva", para aprimorar o seu trabalho....
VEJA => echo -e "$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')"
Att.: Marcelo Oliver
Top cara! Mandei para Área de scripts com créditos a você como contribuidor.
Boa noite Göetia_0xFF.
Verificando agora, notei um detalhe:
Na linha 69, do seu script original, a função é chamada com um argumento...
Instalar_multilib $VERSAO #linha 69
Logo, a linha 18:
VERSAO_SLACKWARE=$VERSAO
Deveria ser:
VERSAO_SLACKWARE=$1
Ainda no seu script original:
A REGEX "
REGEX=( '[0-9]+SBo' '[0-9]+alien' '[0-9]+multilib' )"
e o laço:
for (( count=0;count!=3;count++ )); do
echo "${REGEX[$count]}" >> "$BLACKLIST";
done
Podem ser substituídos por:
echo '[0-9]+'{SBo,alien,multilib}|tr ' ' '\n' >> "$BLACKLIST"
O comando:
$GET_FILES -d -c " open $URL; cd $DIRETORIO_REMOTO$VERSAO_SLACKWARE; mget *
Baixa todos arquivos do referido diretório?
E instala os que terminam com t?z?
$UPG_PKG --reinstall --install-new *.t?z;
É isso... ?
Não é necessário me citar como contribuidor...
A minha intenção é melhorar o seu script...
Troco a citação pela escolha da MELHOR RESPOSTA..... Rsrsrsrsr
VEJA => echo -e "$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')"
Att.: Marcelo Oliver