Rastreando suas encomendas dos Correios

Publicado por Fábio Fabris (última atualização em 23/01/2010)

[ Hits: 9.289 ]

Download correios.sh

Download 1263939365.correios.sh (versão 2)




Script para rastrear os pacotes dos correios que você está esperando. Assim que o pacote mudar de estado ou chegar, um email é enviado para o usuário.

O email deve estar devidamente configurado.

Um exemplo de configuração para o gmail:

/etc/ssmtp/ssmtp.conf
#
# Config file for sSMTP sendmail
#
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
root=postmaster

# The place where the mail goes. The actual machine name is required no
# MX records are consulted. Commonly mailhosts are named mail.domain.com
mailhub=smtp.gmail.com:465

# Where will the mail seem to come from?
#rewriteDomain=

# The full hostname
hostname=marvin

# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: address
FromLineOverride=NO

UseTLS=YES

AuthUser=????@gmail.com

AuthPass=????

  



Versões atualizadas deste script

Versão 2 - Enviado por Fábio Fabris em 19/01/2010

Changelog: Sugestões de arthurd2 adicionadas;
Script mais robusto: prevê indisponibilidade do site;

Download 1263939365.correios.sh


Esconder código-fonte

#!/bin/bash

URL='http://websro.correios.com.br/sro_bin/txect01$.QueryList?P_LINGUA=001&P_TIPO=001&P_COD_UNI='
PATHTMP="/tmp"

function getPage {
    wget -nv -t 10 $2 -O $1.html >>$PATHTMP/$CODE.log 2>>$PATHTMP/$CODE.log
    html2text -nobs $1.html > $1.out
}

function usage {
    cat << EOF
    uso: $0 -c [CODIGO DE RASTREAMENTO] -e [EMAIL] -i [INTERVALO] -b
   -c O código de rastreamento dado pelos correios
   -e O email para enviar as atualizações (o mail deve estar configurado)
   -i intervalo entre checagens em segundos (padrão: 1 hora)
   -b aviso sonoro no caso de modificação
EOF
}

function checkOpt {
    eval R='$'$1
    if test -z '$'$1
    then
   echo $2
   read -e $1  
    fi
}

function beepAux {
    if ! [ -z $BEEP ]
    then
   beep
    fi
}

while getopts "c:e:i:bh" OPTION
do
    case $OPTION in
   c)
       CODE=$OPTARG;;
   e)
       EMAIL=$OPTARG;;
   i)
       POLLTIME=$OPTARG;;
   b)
       BEEP=beep;;
   h)
       usage
       exit;;
   ?)
       usage
       exit;;
    esac
done

checkOpt CODE "Entre com o código de ratreamento do produto"
checkOpt EMAIL "Entre com o email que deve ser avisado"
checkOpt POLLTIME "Entre com o intervalo de checagens"

beepAux

if [ -e $PATHTMP/${CODE}"base.out" ]
then
    echo "arquivo de referencia existe"
else
    echo "baixando arquivo de referencia"
    getPage $PATHTMP/${CODE}"base"  $URL$CODE
fi

#echo | mail $EMAIL -s "\"Quando ' $CODE ' chegar te aviso\""

while [ 1 ];
do
    date
    date >> $PATHTMP/$CODE.log
    getPage $PATHTMP/${CODE}"tmp"  $URL$CODE
    if cmp -s $PATHTMP/${CODE}"base.out" $PATHTMP/${CODE}"tmp.out" >> $PATHTMP/$CODE.log
    then
   echo 'Sem mudança'
    else
   echo 'Houve mudança'
   echo '***** Houve mudança *****' >> $PATHTMP/$CODE.log
   beepAux
   if fgrep -q Entregue $PATHTMP/${CODE}"base.out"
   then
       mail $EMAIL -s '"Chegou o Pacote"' <$PATHTMP/${CODE}"tmp.out"
       echo "chegou o pacote"
       exit
   else
       mail $EMAIL -s '"Mudança de Estado"' <$PATHTMP/${CODE}"tmp.out"
       getPage $PATHTMP/${CODE}"base"  $URL$CODE
   fi
    fi
    sleep $POLLTIME
done

Scripts recomendados

Conectar em rede Wireless

Redireciona

Limpar pacotes com versões antigas do cache do apt

de - deep editor

"desmontar" partiçao fat


  

Comentários
[1] Comentário enviado por arthurd2 em 19/01/2010 - 10:58h

Otima idéia!
Ja estou usando!

Porem la vai umas dicas:
- Colocas os pacotes necessários para rodar (Ex. ssmtp)
- Se o script é executado sem argumentos, ele não cai no 'Usage'.
- O intervalo padrão de 1 hora não esta sendo aplicado.

[2] Comentário enviado por fabiofabris em 19/01/2010 - 12:10h

Você tem razão artur!
Uma versão atualizada do script com as modificações que você propôs e outras melhorias está em:

http://www.inf.ufes.br/~ffabris/correios.sh

ao mesmo tempo submeti uma versão para o "viva o linux" que está aguardando aceitação. em breve estará disponível.

obrigado pelos comentários



[3] Comentário enviado por m4rc310 em 19/01/2010 - 14:22h

Muito bom! Mer serviu como uma luva! Parabéns. Já estou usando.


Contribuir com comentário