miércoles, 5 de noviembre de 2014

Script automatizado con envío de ip pública vía email ( Linux + sSMTP + email + cron&crontab )










Anteriormente vimos en "Enviando email desde consola (Linux): SSMTP + GMAIL" como configurar nuestro sistema para enviar emails desde el terminal y también vimos en "Buscando nuestra dirección ip pública" como saber cual es nuestra ip pública. 

En este caso tiraremos de lo anterior y generaremos un script el cual nos va a permitir tener en nuestro correo la dirección ip pública de nuestro host de forma automatizada y que se ejecutará cuando nosotros queramos. Para esto último tiraremos de cron&contrab que nos permitirá ponerle un tiempo de ejecución a nuestro script para mantener actualizado y saber si hemos tenido algún cambio en nuestra ip pública.


" Como aspecto de seguridad esta "herramienta" la podríamos tener en nuestro propio portátil, así en caso de ser sustraído y conecten nuestro ordenador este ya enviaría la ip pública a nuestro email. Con esta información ya tendríamos un gran paso y nos pondríamos manos a la obra en la recuperación de nuestro portátil. "

Una vez repasado todo la anterior, nos ponemos manos a la obra con nuestro script. Como editor utilizaré vim, pero siempre se puede usar el sencillo nano para ello. Nos vamos al terminal y creamos el script mediante "vim nombrescript.sh". Una vez dentro introducimos el código.


#!/bin/sh
# Script envío ip pública via email.
echo "# Ip publica mserv --> $(curl icanhazip.com) || fecha: $(date)" | mail -s "# mserv ip: $(curl icanhazip.com) | fecha: $(date)" usuario@gmail.com                       

        
                                                 
                                                                    

Este script hace un envío de la ip pública con la fecha y hora al correo electrónico en mi caso gmail.

Una vez tenemos, automatizaremos el proceso para que este script se ejecute cada 5 minutos en nuestro caso (en vuestro caso según el tiempo que deseéis), pero antes de nada vamos hacer un pequeño repaso a crontab.

Con crontab podemos controlar el momento en ele que se ejecutan determinadas tareas según una fecha, una hora, una serie de veces, etc. 

Para usar crontab podemos hacerlo de la siguiente manera:

crontab -e  (Nos permite editar y configurar el script o tarea que se vaya a realizar)
crontab -l   (Nos lista tareas que ya están programadas)
crontab -d  (Borra las tareas que ya están programadas)

Una vez dentro del fichero tendremos que escribir con un orden tal que así ''m h dom mon dow user /command/ruta/del/script.sh'
  • m = el minuto en el que se va a ejecutar.
  • h  = la hora en que se va a ejecutar.
  • dom = el día del mes en el que se va a ejecutar.
  • dow = el día de la semana.
  • user = el usuario que lo va a ejecutar.
  • command = la ruta del script que vamos a ejecutar. 

Tenemos también caracteres especiales predefinidos como son:

  • @reboot (al iniciarse el sistema)
  • @yearly (una vez al año)
  • @annually (una vez al año)
  • @monthly (una vez al mes)
  • @weekly (una vez a la semana)
  • @daily (una vez al día)
  • @midnight (una vez al día)
  • @hourly  (una vez cada hora)

Una vez visto por encima pondré un par de ejemplos

*/30 * * * * /ruta/del/script.sh (se ejecutará cada 30 minutos)

30 21 * 7 root apt-get -y update (el domingo a las 21:30 root ejecutará la actualización)

Si necesitáis más ejemplos, aquí los tenéis

Una vez habiendo visto crontab por encima procedemos a hacer nuestro ejemplo. Abrimos la consola y escribimos '
crontab -e'. Una vez ahí escribiré mi ejemplo (si vosotros usáis otro pues el vuestro).


*/5 * * * * /ruta/del/script/enviodecorreoip.sh 


 (esto lo que hará será dirigirse a la ruta del script y ejecutarlo cada 5 minutos) 


Una vez echo esto nos dirigimos a nuestro correo (gmail en mi caso) y comprobamos que ha comenzado a funcionar.