Creando programas de línea de comandos con node

Una de las cosas que he hecho últimamente, es instalar un servidor con una Raspberry Pi v2 en casa para acceder desde fuera usando OpenVPN. Pero para que fuera accesible siempre a través del mismo dominio necesitaba una forma de actualizar el registro DNS y quería hacerlo con mi propio dominio y no con ddns, no-ip o similares así que hice un programa en node que hiciera esto por mi aprovechando la API de OVH. Continúa leyendo Creando programas de línea de comandos con node

Monitorizar directorios para ejecutar comandos

Hace poco tiempo escribí un artículo de como configurar Nginx con certificados válidos (gracias a Let’s Encrypt), una de las cosas que estaba incompleta era que al actualizar los certificados con la tarea cron, debíamos además reiniciar Nginx para que use los nuevos certificados. Si no hacemos esto, corremos el peligro de que pese a tener los certificados renovados se muestren como no válidos debido a que está usando los viejos y/o revocados.

Es por ello que hoy vamos a usar la herramienta incron para monitorizar el directorio de los certificados y si estos cambian para bien o para mal, Nginx se reiniciará después de comprobar que la configuración funciona.

También decir que si lo que busca es un tutorial completo de esta herramienta puede leer uno en español aquí o el artículo en el que me he basado para escribir este en inglés.

Requisitos

  • Servidor Linux, este artículo está hecho para servidores debian. Para otros deberá usar el instalador de paquetes de su distribución (CentOS, yum; por poner un ejemplo). Lo demás es exactamente igual.

Instalando incron

Para instalar estas herramientas tan solo debemos ejecutar apt:

$ apt-get install -y incron

Reiniciar Nginx si no hay fallos de configuración

Para hacer esta labor he hecho un script que almaceno en /opt/nginx-restart.sh:

#!/usr/bin/env bash

##
# Script to reload nginx if there are no errors on config files
# Author: Gabriel Trabanco
# Website: www.gabi.uno
##

`which nginx` -t
if [ $? -eq 0 ]  
then  
        echo "Reloading Nginx Configuration"
        /etc/init.d/nginx restart
fi  

Quizás sea más correcto $ service nginx restart no lo sé, yo lo he hecho así sin más y funciona.

El crontab de incron: incrontab

Para utilizar incrontab lo haremos como si de crontab se tratara.
Para ello añadiremos comandos con el formato:

/directorio/a/comprobar TAREA_PARA_MONITORIZAR comando_a_ejecutar

Por ejemplo, para monitorizar los cambios en los certificados y reiniciar nginx yo tengo:

/etc/letsencrypt/live/blog.gabi.com.es IN_MODIFY,IN_CREATE,IN_DELETE /opt/nginx-restart.sh

Usando $ incrontab -e como root

Habréis notado que al tratar de agregar una tarea como root os dice “que os peinéis” y no sé si teneis peine o no pero si que tenéis la solución.
Para poder añadir tareas como root (y en realidad cualquier usuario) debemos de añadir el usuario a la lista de usuarios permitidos a usar incrontab, esta lista se encuentra en /etc/incron.allow

Configurando incron

Una de las cosas que se puede configurar en incron es hacer que en vez de abrirnos el editor de textos nano nos abra vim (por ejemplo y en mi caso) para editar las tareas, para ello debemos abrir el archivo de configuración /etc/incron.conf y en la última línea añadir o modificar la línea comentada (y descomentarla) por:

editor = vim  

Ni que decir que esta sección no es más que una excusa para que sepáis que incron se puede configurar.

Más información

Hay bastantes eventos a los que añadir tareas, te sugiero que mires alguna de las referencias que figuran al pie de página. Recomiendo la fuente que he usado para este artículo, es ligeramente mejor que el artículo en español, de todas formas si no sabes inglés o prefieres leer la documentación en español con lo que digo aquí más el tutorial en español tendrás contenido de sobra.


Fuentes y referencias:

  1. https://www.howtoforge.com/tutorial/trigger-commands-on-file-or-directory-changes-with-incron/
  2. Antigua web oficial con una sección de documentación y preguntas frecuentes suficiente buenas: http://inotify.aiken.cz/
  3. Tutorial en español: http://www.cyberhades.com/2009/01/30/tutorial-de-incron/

Echando a GoogleBot de mi log de accesos

La verdad que desde que puse el blog en funcionamiento no tengo muchas visitas, tampoco lo he promocionado ni nada parecido, tampoco he trabajado en escribir en inglés y español (cosa que me gustaría) y por todo esto, sus pocos artículos e incierta calidad (no sé si lo que hay es suficiente o está bien para mis visitantes) no tengo muchas visitas.

Pero hay un visitante que es un poco pesado, diría que incluso me acosa, en efecto es Google Bot. Google Bot es bueno, no es malo, quizás demasiado cotilla…
Ciertamente tantas visitas que no deberían contar como tales genera un log de accesos muy pesado para algo tan pequeño como este blog en un servidor muy limitado en todos los aspectos, por lo que creo que es bueno hacer que este tipo de visitas directamente no se registren. Continúa leyendo Echando a GoogleBot de mi log de accesos