Monitorear archivos y carpetas en tu Linux con incron && incrontab

Published:

Gracias al feedback de nuestros lectores me han comentado del comando incron e incrontab, hoy vamos a ver como se instala y el uso que podemos darle para saber cuando se modifica, elimina, crea, etc, un archivo o el contenido de una carpeta, sin duda algo muy interesante.

Incron es una potente herramienta para monitorear la actividad del sistema de archivos. Consiste en un demonio y un manipulador de tablas. Se usa de manera similar a la del cron. La diferencia principal es que «inotify cron» (corresponde con las dos primeras letras de incron) maneja eventos del sistema de archivos en lugar de periodos de tiempo como lo hace cron.

Incron proporciona una forma sencilla de cómo resolver muchas situaciones diferentes sobre todo cuando algo depende de los eventos del sistema de archivos.

Aquí puede ver algunos ejemplos en los que incron es una buena solución:

  •     Notificación a los programas (por ejemplo, demonios del servidor) sobre cambios en la configuración.
  •     Guardando cambios en archivos críticos (con su eventual recuperación).
  •     Monitoreo de uso de archivos, estadísticas.

INSTALACION

CentOS
yum install incron

Debian
apt install incron

ARCHIVOS DE CONFIGURACION

  • /etc/incron.conf: archivo de configuración principal de incron
  • /etc/incron.d/: en esta carpeta se examina por incrementos de los archivos de la tabla del sistema. Debe colocar todo el archivo de configuración aquí según el directorio o los nombres de dominio.
  • /etc/incron.allow: este archivo contiene usuarios autorizados para usar incron.
  • /etc/incron.deny: este archivo contiene usuarios que no pueden utilizar incron.
  • /var/spool/incron: este directorio se examina en incrementos para los archivos de la tabla de usuarios que establecen los usuarios que ejecutan el comando incrontab.

USO DE INCRON

Antes que nada debemos activar el servicio. Para systemd, vamos a habilitarlo e iniciarlo, es tan simple como:

systemctl enable incron
systemctl start incron

Ahora debemos habilitar a los usuarios que podrán utilizar incron, para ello vamos a editar uno de los archivos de configuración:

nano /etc/incron.allow

Donde agregaremos los usuarios que podrán hacer uso de la herramienta, si son más de uno van uno debajo del otro, solo el nombre de usuario.

SINTAXIS

La sintaxis de las reglas de incron es similar a las de cron, si viste la publicación de uso de cron y crontab vas a ver que es similar, y si no nos seguís podes sumarte a cualquier de nuestras redes sociales.

Carpetas_o_archivo_a_monitorear   Eventos   Acción

Donde:

  • Carpetas_o_archivo_a_monitorear: archivos o carpetas que se van a monitorizar los cambios.
  • Eventos: los cambios a monitorizar en los objetivos son:
    • IN_ACCESS: Vigila si el archivo es accedido.
    • IN_MODIFY: Vigila si el archivo es modificado.
    • IN_ATTRIB: Vigila los cambios en los metadatos (permisos, atributos, fechas, …)
    • IN_CLOSE_WRITE: Cerrado un fichero de lectura/escritura.
    • IN_CLOSE_NOWRITE: Cerrado un archivo de sólo lectura.
    • IN_OPEN: Archivo abierto.
    • IN_MOVED_FROM: Se ha movido el fichero fuera del directorio vigilado.
    • IN_MOVED_TO: Se ha movido el fichero dentro del directorio vigilado.
    • IN_CREATE: Nuevo fichero/directorio creado dentro del directorio vigilado.
    • IN_DELETE: Fichero/directorio eliminado del directorio vigilado.
    • IN_DELETE_SELF: Supervisa si se elimina el directorio vigilado.
    • IN_CLOSE: Superivsa los eventos IN_CLOSE_WRITE e IN_CLOSE_NOWRITE
    • IN_MOVE: Supervisa los eventos IN_MOVED_FROM e IN_MOVED_TO
    • IN_ALL_EVENTS: Supervisa todos los eventos listados.
    • IN_DONT_FOLLOW: No sigue enlaces simbólicos.
    • IN_ONLYDIR: Supervisa el path únicamente si es un directorio.
    • IN_MOVE_SELF: Supervisa el borrado del fichero/directorio.
  • Acción: Órden o script que se ejecutará cuando se cumplan las condiciones de notificación. Se pueden usar las siguientes variables:
    • $$: signo del dolar.
    • $@: ruta al directorio contenedor
    • $#: archivo o directorio observado sin su ruta
    • $%: evento que provoca la notificación
    • $&: número del evento que se ejecutó

PARAMETROS

  • incrontab -l : Muestra las reglas que tenemos definidas.
  • incrontab -r : Borra la tabla de reglas por completo. (Cuidado, que no pide confirmación.)
  • incrontab -d : Recarga la tabla de reglas. Esto será necesario cada vez que modifiquemos las reglas o creemos nuevas.
  • incrontab -e: Abrirá nuestro editor de texto predeterminado para crear las nueva reglas.

EJEMPLO

Vamos a ver paso a paso como monitorear la carpeta /home/nksistemas/nk, lo primero que hacemos el crear una regla

incrontab -e

Agregamos los parámetros para monitorear la carpeta completa

/home/nksistemas/nk IN_ALL_EVENTS echo “$@/$# $%”

Ahora recargamos la tabla de reglas para que comience a operar

incrontab -d

A continuación creamos un archivos y carpetas para probar, también eliminamos cosas

nano /home/nksistemas/nk/prueba

El comando echo manda la salida al log del sistema, por lo tanto hacemos para ver los registros hacemos:

tail /var/log/syslog

Combinando incron con cron, podemos lograr monitorear carpetas o archivos en un determinado intervalo de tiempo y sin duda será una gran ayuda para todo sysadmin.

- Advertisement -
Jorge
Jorgehttps://nksistemas.com
Soy Jorge, Sr Sysadmin Linux/DevOps/SRE y creador de NKSistemas.com Trabajo con plataformas: Linux, Windows, AWS, GCP, VMware, Helm, kubernetes, Docker, etc.

Related articles

Ads Blocker Image Powered by Code Help Pro

Se detecto un bloqueador de publicidad!!!

Nuestro contenido es 100% gratuito, por favor colabora con nosotros, permite la publicidad y disfruta del contenido.