#!/bin/sh
# ip-trace.sh
# Autor Alejandro Amaral - Creative Commons Reconocimiento-CompartirIgual 3.0 Unported License
#---------------------------------------------------------------------------
# Envia el numero de ip externa y un reporte de uso a una casilla de email.
#---------------------------------------------------------------------------
# La función reporte() se encarga de generar un reporte con los datos mas
# relevantes (uso de cpu, quien esta loggeado y las ultimas lineas del
# log de sistema). El script pide al sitio www.showmyip.com la dirección
# externa de ip y el sitio devuelve una pagina de donde es extraída
# para ser almacenada en la variable MYIP. Luego si el archivo REPORT
# no existe entonces es creado y se envía el reporte vía mail. En caso
# de que exista se compara con la ultima dirección solicitada y si son
# iguales no se manda el reporte y así evitar una saturación de mails
# en la casilla. Si no fueran iguales se envía la nueva dirección de ip
# y el reporte. Cada vez que se corre el script se genera una nueva
# entrada en el log del sistema indicando el resultado de la operación.
REPORT=/tmp/report.txt
reporte()
{
echo $MYIP > $REPORT
uptime >> $REPORT
echo -e "\n=========== Logged in ============" >> $REPORT
last -n 5 >> $REPORT
echo -e "\n============ last log ============" >> $REPORT
tail -n 10 /var/log/messages >> $REPORT
mail -s "$MYIP Report" tu_direccion_de_mail@dominio.com < $REPORT
logger iptrace enviado con exito
return
}
# Adquirir la direccion de IP desde una consulta a www.showmyip.com
MYIP=`wget -qO - www.showmyip.com.ar | grep -Eo -m 1 "[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}"`
if [ ! -f $REPORT ]
then
touch $REPORT
reporte
else
LASTIP=`head -n 1 $REPORT`
if [ $LASTIP == $MYIP ]
then
logger iptrace ip sin cambios
else
reporte
fi
fi