¡Este blog ha sido migrado!

En 15 segundos serás redirigido automáticamente al nuevo Blog. De lo contrario, visita
http://compumegared.com.ar
y actualiza tus favoritos. ¡Gracias!


miércoles, 24 de junio de 2009

ipcheck y cron en (K)ubuntu

Para los que tenemos IP dinámica -la gran mayoría- y necesitamos tener un dominio fijo existen varias webs que ofrecen DNS dinámicos.

Yo suelo usar DynDNS.com, pero existen otras como por ejemplo No-IP.

Una vez que conseguimos nuestro usuario y dominio, tendremos que ejecutar alguno de los clientes para la actualización de la IP.

Mi cliente preferido es ipcheck, ya que me resulta fácil de configurar y ya me acostumbré a el.
También se puede usar ddclient, con una configuración diferente.



ipcheck es un script instalable, por lo tanto podemos agregarlo de la siguiente manera:

sudo apt-get install ipcheck

Si ejecutamos ipcheck sin parámetros, obtenemos la siguiente ayuda:

Example 1: the external IP is on eth0 of the current machine
python ipcheck.py -l -i eth0 username password hostnames

Example 2: you are using the Linksys routing device
python ipcheck.py -l -L linksyspassword username password hostnames

Example 3: you want to use web based ip detection
python ipcheck.py -l -r checkip.dyndns.org:8245 ...

where ... is your dyndns username password and hostnames.
Hostnames should be comma delimited if there are more than one.

Ejemplo 1: La IP externa corresponde a eth0
Ejemplo 2: Está utilizando un routeador Linsys
Ejemplo 3: Desea usar la detección de IP vía web

Hay varios métodos para configurarlo, dependiendo en gran parte del tipo de modem (Ethernet/USB).
Si se trata de un Ethernet la IP del eth0 será una local (192.168.x.x) por lo que la opción vía web sería la más adecuada.
En cambio si la IP del eth0 es nuestra IP pública, podemos usar la primer opción.

La primera vez que lo ejecutemos nos va a crear los archivos necesarios para la actualización, por lo tanto debemos situarnos en un directorio con permisos de escritura, lectura y ejecución (777).


En algunas webs sugieren que se corra el comando directamente en el directorio /root, pero esto requiere la utilización de sudo, que en caso de  ejecutarlo automáticamente necesitaríamos la interacción del usuario para ingresar la clave de superusuario. Por lo que finalmente lo descarté.


Simplemente creé una carpeta oculta en el HOME con el nombre .ipcheck, pero puedes utilizar cualquier nombre, más que nada para que no quede a la vista, por una cuestión de aspecto digamos.

Decíamos que necesitamos permisos plenos, entonces hacemos:

chmod 777 /home/usuario/.ipcheck

Luego ingresamos a esa carpeta y ejecutamos, sólo la primera vez:


ipcheck --makedat -l -r checkip.dyndns.org:8245 usuario contraseña host

Donde cambiamos los parámetros usuario, contraseña y host, por la información de nuestra cuenta en DynDNS.

La opción --makedat (con doble guión del medio) generará los archivos iniciales para que el script envíe la información a DynDNS.

Estos son:
ipcheck.html
ipcheck.dat
webip.out
ipcheck.log

En el archivo ipcheck.dat aparece nuestra IP y el host que han quedado vinculados.

Para una segunda ejecución, haríamos lo siguiente:

ipcheck -l -r checkip.dyndns.org:8245 usuario contraseña host

Esto sirve para que no "abusemos" del servicio y nos den de baja la cuenta, ya que el mismo script se fija si ha cambiado la IP comparándola con el .dat
Sólo va a actualizar si difiere ls información obtenida vía web con la del archivo dat.

ipcheck.py: host.com nochg 190.30.3.17 -abusive if continually repeated

Como se puede ver, la dirección no cambió (nochg), por lo tanto me avisa de que es un comportamiento abusivo el intentar actualizar continuamente.
También hay que decir que no lo podemos ejecutar más de una vez con la opción --makedat sin borrar el archivo .dat y .html, esto a modo de prevención adicional.


Una vez hecho todo esto, viene la parte que más dolores de cabeza me causó, más que nada por lo estricto que puede resultar el cron o Planificador de Tareas.

En primer lugar debemos crear un script, el que ejecutaremos desde cron para mantener nuestra IP siempre actualizada.

El contenido del script (cambioip) debe ser el siguiente:

#!/bin/bash

if [ -f $HOME/.ipckeck/ipcheck.dat ]; then
  /usr/sbin/ipcheck --makedat -l -r checkip.dyndns.org:8245 usuario contraseña host 2>&1|tee cambioip.log
else
  /usr/sbin/ipcheck -l -r checkip.dyndns.org:8245 iannoel iannoel2031 iannoel.homeunix.com 2>&1|tee cambioip.log
fi

Justamente hacemos un if para constatar si se debe ejecutar con la opción --makedat, esto en caso de que no exista el archivo .dat

El agregado de 2>1|tee cambioip.log enviará tanto la salida de error (2>) como la salida estándar (1) por medio de la T (tee) a un archivo cambioip.log, cuestión que podamos verificar cualquier anomalía en la ejecución.

Un dato importante a tener en cuenta es que SIEMPRE debemos trabajar con el PATH completo para que el crontab funcione, me sucedió tener que estar luchando y que no funcione por no colocar /usr/sbin/ipcheck. Lo peor es que al ejecutar el script cambioip con la forma:

./cambioip

Dentro del mismo directorio, funcionaba perfecto, pero fallaba al ejecutarlo con el crontab.


Para ir finalizando, vamos a ver cómo agregamos la tarea para que se repita la ejecución del script automáticamente:

Vamos a Configuración del sistema -> Avanzado -> Planificador de tareas

Damos clic al botón Nueva tarea... y cargamos lo siguiente

 
El comando a ejecutar es el siguiente:
cd /home/usuario/.ipcheck;./ipcheck
Lo que hace esto es acceder al directorio con cd y ejecutar el script como lo haría cualquiera de nostros, con un punto-barra.
Luego seleccionaremos los parámetros de repetición, diario y cada 15 minutos es el que me parece más adecuado en este caso.
Luego podremos acceder a la carpeta y buscar el log que hicimos desde el script para verificar que se está ejecutando correctamente.
Espero que les sirva de ayuda ya que a mi me costó bastante, más que nada la automatización.
 


viernes, 19 de junio de 2009

Show the desktop III

El lector cuervopanzudo nos envía su escritorio para que lo disfrutemos en el blog.


Podemos decir que se trata de un verdadero lanzado ya que tiene lo último de lo último.

El está corriendo un Kubuntu Karmic Koala 9.10, que está en Alpha2, con KDE 4.2.90 (4.3 Beta2). Adornando el escritorio tiene los plasmoides de Vista de Carpeta, Daisy y PPC (plasmoide personalizable del clima).
Como wallpaper está utilizando uno de los preinstalados, There is Rain on the Table, muy bonito por cierto.


Adicionales: Instalé el tema Air de Kde-look ya que desde Karmic no me dejaba
y quería probarla ya que será el que venga de serie cuando salga la 9.10.  El
tema de las ventanas es Skulpture (está en los repos).
Desde ya le agradezco a cuervopanzudo su colaboración!

Vos también podés participar...
 
 

Bloggerized by : GosuBlogger | Blue Weed by Blog Oh! Blog .


Crea tus Relojes en flash