quarta-feira, 12 de setembro de 2012

Renovando Livros da Biblioteca Unipac - Araguari

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!

2 comentários:

  1. Muitos 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