SCRIPT – Enviar el número de IP externa y estado del sistema a una cuenta de email.-

Seguramente si alguna vez usaste Secure Shell (ssh) te abras encontrado con el inconveniente de saber cual es tu número de IP externa cuando tu ISP te asigna uno dinamicamente. Si el modem se reinicia o se corta el suministro eléctrico o cualquier otro inconveniente es altamente probable que se adquiera otro IP. Con otras tecnologías se utilizan servidores a los cuales se conectan los programas clientes y asi se conoce la dirección. ¿Que pasa cuando no tenemos estos servidores?. ¡Linux/Unix al rescate!. Con este script podremos saber enviar nuestra dirección de IP a una cuenta de email externa hotmail, gmail u otra (teniendo postfix o sendmail debidamente configurado). A continuación el script.

#!/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
Esta entrada fue publicada en Unix - Linux. Guarda el enlace permanente.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.