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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
#!/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 |