Inicio > Informática > Enviarte un email cuando cambia tu ip en linux

Enviarte un email cuando cambia tu ip en linux

septiembre 23, 2010 Deja un comentario Go to comments

En el trabajo utilizan un servidor dhcp para asignar automáticamente las direcciones a cada ordenador. De hecho, son reacios a proporcionarte una ip fija, a pesar de que trabajamos con una clase B. Generalmente, la ip de mi ordenador se mantiene fija si no hacies un dhcp renew o apagas el ordenador. Pero de vez en cuando ocurre que cambia; incluso varias veces en el mismo día (imagino que cuando tienen problemas con el servidor, o cuando están haciendo pruebas o cambios de configuración con él).

El caso es que hoy es uno de esos días, y como mi trabajo no acaba en la oficina, sino que suelo continuar en casa, necesito tener acceso remoto a mi pc, y para ello necesito saber mi ip. Así que me he puesto manos a la obra para hacer un script que me mande un correo cada vez que la ip cambia. Para ello necesitamos lo siguiente:

  • sendEmail: un maravilloso programa que facilita enormemente el envío de emails desde la línea de comandos, sin tener que configurar el servidor de correo de linux.
  • El paquete knetfilter, que nos proporciona el comando getip. Aunque hay otras formas de obtener la ip con awk, por ejemplo, pero ésta es más sencilla.
  • Un servidor smtp al que mandar los correos (yo uso el de mi trabajo)

Con todo esto, he diseñado el siguiente script, que coloco en /usr/local/bin/myip


#!/bin/bash

FCONF=/etc/myip
MAIL=tu_direccion_de_correo
SERVER=servidor_smtp

# Get your ip
ip=`getip eth0 | head -n 1 | cut -d ":" -f 2`;
# Get your old ip
oldip=`head -n 1 $FCONF`

# If ip has changed, send email
# and save new ip in config file
if [ $ip != $oldip ];
then
	sendEmail -f $MAIL -t $MAIL -u "Your ip: ${ip}" -m " " -s $SERVER
	echo $ip > $FCONF;
fi

El script se encarga de comprobar cuál era tu dirección ip antes de ejecutarse y, si ha cambiado, te envía un correo con la nueva. La dirección de correo antigua se guarda en el fichero /etc/myip, el cual debemos crear y asignarle permisos de escritura:


sudo touch /etc/myip
sudo chmod a+w /etc/myip

Por último, configuramos cron para que ejecute nuestro script en el intervalo deseado. Yo lo he configurado para que se ejecute cada minuto (no me gusta esperar jejeje). Para ello, ejecutamos el comando contrab -e y escribimos la siguiente línea:


* * * * *  /usr/local/bin/myip

Listo. Cada vez que cambie nuestra ip, deberemos espera 1 minuto más el retardo de nuestro servidor smtp para saber la nueva.

Por cierto, que también sirve para ordenadores con ips privadas. Para conocer tu ip pública, en lugar de usar getip se pueden utilizar otras técnicas.

Categorías:Informática Etiquetas: , ,
  1. akoharowen
    agosto 25, 2012 a las 11:23 pm

    ¡Capo! Muy práctico y sencillo el Script.
    ¡Saludos!

  2. Xoan
    agosto 5, 2014 a las 9:03 am

    Como se establece el tiempo ? La última linea de comando que dices no la entiendo.
    El script en que formato debe de estar ?

    • agosto 7, 2014 a las 9:57 am

      El script es texto plano con permisos de ejecución. No hay ningún “formato” especial.

      Para cron se abre el editor del sistema (vi por defecto) para editar la configuración. Ahí es donde se introduce la última línea que ejecuta el script. Las opciones de tiempo de cron son bastante complejas. Puedes establecer minuto, hora, día de la semana, día del mes, etc. Mírate el man que viene bien explicado.

  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s