Rastreando suas encomendas dos Correios

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

[ Hits: 8.818 ]

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

Criando um pacote autoinstalador em shell

SlackBuild para empacotar o Firefox (binário) pro Slackware

SSH automático (sem senha)

Lista de Selecao de arquivos no Dialog

Remover e-mails com MX inexistente e status deferred em servidores Postfix


  

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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts