Olá! hoje estarei postando um script para renovação de livros na Unipac - Araguari. Este script foi feito em Shell script; para mais informações sobre o que é o Shell script e como funciona entre em : http://pt.wikipedia.org/wiki/Shell_script lá encontra uma boa explicação, porém adoro as explicações deste camarada aqui: http://aurelio.net/ e também recomendo o livro do mesmo: Shell Script Profissional que você encontra mais informações em: http://www.shellscript.com.br/
################################
#POST PARA FINS ACADÊMICOS
################################
Pra começar sou usuário de linux Ubuntu a um "tempinho".
Não testei em outras distros.
Este script tem sua chamada inserida no arquivo agendador de tarefas o crontab. Então para funcionar crie uma pasta com o nome: "RenovaBibUnipac" no seu diretorio /home/"nome de usuario" crie a pasta como realmente está escrita ok
/home/"nome de usuario"/RenovaBibUnipac
Abra um arquivo de texto comum copie e cole o script abaixo:
#!/bin/bash
#########################################################################################################
#
# SCRIPT PARA AUTOMAÇÃO NA RENOVAÇÃO DE LIVROS DA UNIPAC
#
#
#
# Autor: Leonardo Barbini
# Versão: 0
##########################################################################################################
#########################################################################################################
# CONFIGURAÇÕES INICIAIS
#
if [ $# -eq 0 ] ; then
DATE=`date +%Y-%m-%dT%H-%M-%S`
else
DATE=$1
fi
WGET=/usr/bin/wget
PASTAUSER="Escreva aqui entre aspas a pasta de seu user"
CAPTURE_DIR=/home/$PASTAUSER/RenovaBibUnipac
WGET_LOG=$CAPTURE_DIR/wget-$DATE.log
USER="escreva aqui entre aspas sua matricula do jeito q vc acessa no site da biblioteca"
SENHA="escreva aqui entre aspas a sua senha"
#
#
#########################################################################################################
$WGET \
-a $WGET_LOG \
-U "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)" \
-R .js,.css,.gif,.GIF,.jpg,.JPG,.jpeg,.swf,.pdf,.doc,.ico,.zip,.tar,.gz,.png,.wmv,.mov,.avi,.mpg,.mpeg,.au \
-O "$CAPTURE_DIR/pageLogin" \
"http://biblioteca.unipac.br/cgi-bin/wxis.exe?IsisScript=phl8%2F021.xis&opc=ver_login&cipar=araguari%2Fphl.cip&lang=por&login=$USER&pwd=$SENHA"
echo "Conectando"
MENULINK=$(paste -s "$CAPTURE_DIR/pageLogin" | egrep -io "<a[[:space:]]*href=\"/cgi-bin/wxis\.exe\?IsisScript[^\"]+\"[[:space:]]*target=\"menu\">[[:space:]]*Continuar" | egrep -io "href=\"[^\"]+\"" | cut -d "\"" -f2 | sort -u)
ABORTACONEXAO=$(paste -s "$CAPTURE_DIR/pageLogin" | egrep -io "<a[[:space:]]*href=\"/cgi-bin/wxis\.exe\?IsisScript[^>]+>[[:space:]]*Abortar[[:space:]]*conex[^i]+indevida" | egrep -io "href=\"[^\"]+\"" | cut -d "\"" -f2 | sort -u)
if [ "$ABORTACONEXAO" != "" ]; then
$WGET \
-a $WGET_LOG \
-U "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)" \
-R .js,.css,.gif,.GIF,.jpg,.JPG,.jpeg,.swf,.pdf,.doc,.ico,.zip,.tar,.gz,.png,.wmv,.mov,.avi,.mpg,.mpeg,.au \
-O "$CAPTURE_DIR/erroLogin" \
"http://biblioteca.unipac.br$ABORTACONEXAO"
echo "Erro de Conexao tentando novamente"
ABORTACONEXAO=""
sh RenovaBibUnipac.sh
exit
fi
if [ "$MENULINK" != "" ]; then
$WGET \
-a $WGET_LOG \
-U "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)" \
-R .js,.css,.gif,.GIF,.jpg,.JPG,.jpeg,.swf,.pdf,.doc,.ico,.zip,.tar,.gz,.png,.wmv,.mov,.avi,.mpg,.mpeg,.au \
-O "$CAPTURE_DIR/pageMenu" \
"http://biblioteca.unipac.br$MENULINK"
echo "Entrando em MENU"
RENOVALINK=$(paste -s "$CAPTURE_DIR/pageMenu" | egrep -io "<a[[:space:]]*href=\"/cgi-bin/wxis\.exe\?IsisScript[^\"]+\"[[:space:]]*target=\"result\">[[:space:]]*Extrato[[:space:]]*.[[:space:]]*Renova" | egrep -io "href=\"[^\"]+\"" | cut -d "\"" -f2 | sort -u)
SAIRLINK=$(paste -s "$CAPTURE_DIR/pageMenu" | egrep -io "<a[[:space:]]*href=\"/cgi-bin/wxis\.exe\?IsisScript[^>]+>[[:space:]]*<b>[[:space:]]*Sair" | egrep -io "href=\"[^\"]+\"" | cut -d "\"" -f2 | sort -u)
if [ "$RENOVALINK" != "" -a "$SAIRLINK" != "" ]; then
$WGET \
-a $WGET_LOG \
-U "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)" \
-R .js,.css,.gif,.GIF,.jpg,.JPG,.jpeg,.swf,.pdf,.doc,.ico,.zip,.tar,.gz,.png,.wmv,.mov,.avi,.mpg,.mpeg,.au \
-O "$CAPTURE_DIR/pageRenova" \
"http://biblioteca.unipac.br$RENOVALINK"
echo "Salvando links de livros"
paste -s "$CAPTURE_DIR/pageRenova" | egrep -io "<a[[:space:]]*href=\"/cgi-bin/wxis\.exe\?IsisScript[^\"]+\">[[:space:]]*\[Renovar" | egrep -io "href=\"[^\"]+\"" | cut -d "\"" -f2 | sort -u > "$CAPTURE_DIR/listaLivros.txt"
if [ -r "$CAPTURE_DIR/listaLivros.txt" ]; then
while read line; do
$WGET \
-a $WGET_LOG \
-U "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)" \
-R .js,.css,.gif,.GIF,.jpg,.JPG,.jpeg,.swf,.pdf,.doc,.ico,.zip,.tar,.gz,.png,.wmv,.mov,.avi,.mpg,.mpeg,.au \
-O "$CAPTURE_DIR/renovando$P" \
"http://biblioteca.unipac.br$line"
sleep 3
done < "$CAPTURE_DIR/listaLivros.txt"
fi
echo "Finalizando Conexao"
$WGET \
-a $WGET_LOG \
-U "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)" \
-R .js,.css,.gif,.GIF,.jpg,.JPG,.jpeg,.swf,.pdf,.doc,.ico,.zip,.tar,.gz,.png,.wmv,.mov,.avi,.mpg,.mpeg,.au \
-O "$CAPTURE_DIR/sair" \
"http://biblioteca.unipac.br$SAIRLINK"
sleep 3
rm -f "$CAPTURE_DIR/listaLivros.txt"
rm -f "$CAPTURE_DIR/pageLogin"
rm -f "$CAPTURE_DIR/pageMenu"
rm -f "$CAPTURE_DIR/pageRenova"
rm -f "$CAPTURE_DIR/sair"
fi
fi
Ok! Agora lembre se de alterar as informações pessoais no cabeçalho do script, que são:
O nome da sua pasta user exemplo pasta joao; está em /home/joao
O usuario que é o número do mesmo modo que você digita para acessar via o site da biblioteca da unipac.
E a senha de usuário.
Depois de alterar estas informações salve este arquivo na sua pasta de usuario com o nome de RenovaBibUnipac.sh exemplo:
/home/joao/RenovaBibUnipac.sh
Pronto!
O legal agora é saber um horário que você sempre fica com seu micro ligado no dia a dia.
Siga os comandos no terminal:
crontab -e
logo em seguida será exibida uma mensagem em qual editor de texto você deseja acessar o arquivo de agendamento; escolha a opção nano que é facil de usar.
veja um exemplo de como funciona o agendamento no crontab:
# m h dom mon dow command
30 9 * * * sh /home/joao/RenovaBibUnipac.sh
Todas as 9:30 da manha este script é executado. não vou entrar em detalhes, basta ver que é necessário preencher da maneira correta e deduzir os:
(m, h, dom, mon, dow comand).
Após configurar tecle Ctrl + X (para sair)
e responder Y (para salvar)
em seguida de ENTER (para escrever no arquivo apresentado).
Pronto o crontab está configurado, basta chamar crontab -e para conferir as informações salvas.
=================================================
Teste: você pode testar seu arquivo de script RenovaBibUnipac.sh mesmo sem configurar o crontab.
no terminal digite:
sh RenovaBibUnipac.sh
Se tudo ocorrer bem, na pasta RenovaBibUnipac você encontrará alguns arquivos: Um arquivo referente ao seu comprovante de renovação e outro referente ao log de download; sempre será gerado um novo arquivo de log toda a vez que executar o script.
=================================================
Se algo der errado, verifique as configurações iniciais de paste de usuário, matricula e senha.
Se mesmo assim não conseguir entre em contato. Pois algumas distros podem divergir nas expressões regulares. leonardobarbini@gmail.com
=================================================
Ok! espero ter ajudado! Bons momentos a todos! até o próximo post!
valeu barbini isto será muito util3
ResponderExcluirMuitos desenvolvedores não reconhecem a capacidade dos Scripts. É importante aprendermos um pouco de Shell, Perl dentr outras linguagens com o qual possa criar simples scripts com funcionalidades maravilhosas!!
ResponderExcluir