ACTUALIZADO: Ahora es inteligente, y comprueba la ip anterior, y si es diferente envia el correo, y si no, no hace nada.
Tras probar el servicio como noip.com, que estaba bien, pero me hacia cosas raras, me quitaban los host de la pagina, y no podia volverlos a crear porque decian que ya existia. He buscado la solución para que la propia raspberry cada 3 días me envie un correo con la ip (aunque tengamos ip dinamicas, estando los routers siempre encendidos y usandose para llamar por telefonos apenas cambian de ip).
1º Instalar el programa que se usara para enviar correos electrónicos. Y otros servicios que ayudaran a conectarse.
sudo apt-get install libnet-ssleay-perl libio-socket-ssl-perl sendemail
Curiosamente una de las funciones tiene un bug, si os da el error de:
"invalid SSL_version specified at /usr/local/share/perl/5.14.2/IO/Socket/SSL.pm line 332"
Debeis editar el fichero:
sudo nano usr/share/perl5/IO/Socket/SSL.pm
Y cambiar la linea donde indique:
m{^(!?)(?:(SSL(?:v2|v3|v23|v2/3))|(TLSv1[12]?))$}i
Por
m{^(!?)(?:(SSL(?:v2|v3|v23|v2/3))|(TLSv1[12]?))}i
Es igual pero ha quitado el $ entre los parentesis finales.
2Aº Creamos un archivo ejecutable SH: Ejecutarse cada x dias.
#!/bin/bash # Get your ip ip=`wget -q -O - checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//'`; echo $ip sendemail -f CuentaQueEnvia@gmail.com -t CuentaAEnvia@gmail.com -s smtp.gmail.com:587 -u "La ip es ${ip}" -m "La ip es ${ip}. Vamos lo mismo que arriba" -v -xu CuentaSin@ -xp ClaveCuenta -o tls=yes2Bº Creamos un archivo ejecutable SH. Cuando se ejecuta comprueba un archivo donde se guarda la ultima ip, y si es diferente manda correo, si no, nada.
#!/bin/bash # Get your ip ip_antigua=`head -1 ipexterna`; ip_nueva=`wget -q -O - checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//'`; if [ $ip_antigua != $ip_nueva ] then sendemail -f CuentaQueEnvia@gmail.com -t CuentaAEnvia@gmail.com -s smtp.gmail.com:587 -u "La ip es ${ip_nueva}" -m "La ip es ${ip_nueva}. Vamos lo mismo que arriba" -v -xu CuentaSin@ -xp ClaveCuenta -o tls=yes wget -q -O - checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//' > ipexterna fi3º Modificamos el cron para que se ejecute cuando queramos:
crontab -e
30 8 */3 * * sh
/home/pi/script.sh
Como detalle importante que he aprendido es el */3, en este caso,
Os recuerdo que el formato de grub es:
minuto hora día_del_mes mes día_de_la_semana
Los siguientes valores numéricos son válidos para cada uno de los campos:
Minuto: Entre 0 y 59
Hora: Entre 0 y 23
Día del mes: Entre 0 y 31
Mes: Entre 0 y 12
Día de la semana: Entre 0 y 7. 0 y 7 equivalen al domingo
Adicionalmente, en los campos mes y día_de_la_semana, podemos usar las tres primera letras del nombre del mes y de los días (en inglés), esto puede ser en mayúsculas o minúsculas. Por lo tanto los valores validos para los días de la semana son: Mon (Lunes), Tue (Martes), Wed (Miércoles), Thu (Jueves), Fri (Viernes), Sat (Sábado), Sun (Domingo); y los valores válidos para los meses son: Jan (Enero), Feb (Febrero), Mar (Marzo), Apr (Abril), May (Mayo), Jun (Junio), Jul (Julio), Aug (Agosto), Sep (Septiembre), Oct (Octubre), Nov (Noviembre), Dec (Diciembre).
Poniendose * como comodin para decir todos.
Fuentes:
Bug conocido del sendemail
http://raspberrypi.stackexchange.com/questions/2118/sendemail-failure
Sacar la ip
http://www.garron.me/en/go2linux/what-is-my-public-ip-command-line.html
Manejo de Cron (muy bueno)
http://www.jveweb.net/archivo/2011/01/usando-cronjobs-en-linux.html
No hay comentarios:
Publicar un comentario