Obtener la IP de cada interfaz en Perl

Obtener la IP de la máquina no tiene mucho misterio. Pero cuando se trata de servidores con varias interfaces de red, algunas incluso virtuales, la cosa cambia. Y se trata de algo que puede tener muchas aplicaciones, como por ejemplo un script que distinga entre si las copias que se van a realizar son realmente desde/hacia una máquina remota o en local y agilizar el proceso.

La manera más resumida en el caso de Linux es filtrar la salida de ifconfig:

my @IP = (`ifconfig -a` =~ /inet addr:(\S+)/g);

Pero es cierto que algún día los desarrolladores de la distribución de turno pudieran decidir traducir las palabras inet addr por direccion inet o a saber, por lo que ya estarían fastidiando la expresión regular y por tanto el invento. Así que por eso para soluciones más elegantes y multiplataforma, que para eso es Perl, se puede hacer uso de algún módulo como […] (continuar leyendo)

El gato reincidente

El gato al acecho

El gato al acecho

Llevamos unos días que casi podríamos decir que tenemos un gato. Lo mejor es que ni se le da de comer ni se le tiene habilitado un lugar donde aliviar sus necesidades. Pero lo malo es que no lo queremos y tenemos que estar atentos para que no se nos meta en casa.

Todo empezó hace un par de semanas. Volví a casa una tarde de domingo y alguien me dijo «se te ha escapado el gato». Sería por la calor o por dormir demasiado a cuento del fin de semana, que pensé que se estaba quedando conmigo. Después de que me lo repitiese entré en razón. Un gato había sido visto por la habitación y echado ipso facto. Pensé que sería algo casual. No le di mayor importancia.

Sin embargo al día siguiente pasé por la cocina de buena mañana y una barra de pan en el suelo con un trozo arrancado me llamó la atención. […] (continuar leyendo)

«cron» y el último día de cada mes

El demonio cron facilita las ejecuciones programadas cuando se trata del primer día del mes. Sin embargo para el último día de cada mes hay que usar un poco de ingenio y otras herramientas del sistema. Una manera:

30 23 * * * [[ $(date +'%d') -eq $(cal | awk '!/^$/{ print $NF }' | tail -1) ]] && /ruta/absoluta/al/script 1>/dev/null 2>&1

Que cada día a las 2330 comprobará si se trata del último día del mes:

  1. Obtiene el día del mes.
  2. Obtiene el calendario del mes actual.
    1. Extrae el final de cada línea del calendario.
    2. Se queda con la última de esas líneas.
  3. Si el día actual es igual al último día del mes obtenido, se ejecuta lo que le digamos y las salidas las manda a /dev/null.

Fuente → The UNIX and Linux Forums.