Programa tareas con Cron

https://helloacm.com/crontab-generator/crontab.jpg

En la administración de servidores, es común la realización de tareas tales como el logging de algún servicio o la ejecucución de scripts que realicen tareas específicas. En esta ocasión aprenderemos  a administrar la "navaja suiza" de automatización para servidores GNU/Linux: Cron

¿Qué es Cron?

Según nuestra fiel amiga Wikipedia:

"En el sistema operativo Unix, cron es un administrador regular de procesos en segundo plano (demonio) que ejecuta procesos o guiones a intervalos regulares (por ejemplo, cada minuto, día, semana o mes). Los procesos que deben ejecutarse y la hora en la que deben hacerlo se especifican en el fichero crontab. El nombre cron viene del griego chronos (χρόνος) que significa "tiempo"."

Uso del demonio "Cron" (comando crontab)


Para interactuar con crontab y en concreto con su archivo de configuración, existen diferentes parámetros que podemos pasar

crontab -e      -> Editar archivo crontab
crontab -r      -> Borrar crontab
crontab -l      -> Enlistar crontab

Es posible ordenar que el demonio de Cron ejecute varias tareas a un tiempo determinado (hora de la máquina donde se ejecuta). La sintáxis puede parecer difícil a veces, pero con la práctica es bastante simple.

m h dom mon dow command

m         = minuto
h          = hora
dom     = día del mes
mon     = mes
dow     = día de la semana
command = orden

Cada de una de estas órdenes está delimitada por algún dígito numérico:

minuto(0-59)
hora(0-23)
DíaDelMes(1-31)
Mes(1-12)
DíaDeLaSemana(0-6)
Comando

NOTA: Los valores numéricos pueden ser sustituídos por el caracter '*', lo que significa que es 'todo'. 

INSTALACIÓN

Para instalar Cron, es posible compilar el código desde los fuentes o realizar. En el caso específico de Debian, pueden hacer la descarga desde los
repositorios:

apt-get install cron 

o

aptitude install cron

Luego de descargarlo, iniciamos el demonio

/etc/init.d/cron start

o

service cron start

o

systemctl start cron

INTERACTUANDO CON CRON

Para poder interactuar con el demonio de Cron, es necesario ejecutar el comando:

crontab -e

La primera vez que ejecutemos el comando, nos mostrará una lista de editores de texto en terminal que tenemos disponibles para utilizar. Seleccionamos alguno y continuamos.

Lo siguiente será editar el archivo cron. Para asignar tareas, hay que ir al
final del archivo cron, agregar comentario (en caso de ser necesario) iniciando la línea con el caracter '#' y justo debajo especificar la tarea a ejecutar así como su tiempo.
 
Cada una de las tareas que asignemos será ejecutada acorde al usuario con el que editemos el archivo. Procure ejecutar el cron con tareas que no requieran permisos de 'root' (en la medida de lo posible).

SINTÁXIS Y EJEMPLOS

Actualizar paquetes todos los días del mes, todos los meses todos los días
de la semana las 12

00 00 * * * aptitude update

Actualizar paquetes todos los días del mes, todos los meses, los lunes
a las 12

00 00 * * 1 aptitude update

Actualizar paquetes cada 5 minutos todos los días, a toda hora, todos los días del mes, todos los meses de lunes a viernes.

*/5 * * * 1-5 aptitude update

NOTA: Luego de realizar cualquier cambio dentro del archivo cron, hay que reiniciar el demonio.

ÓRDENES PREDEFINIDAS

Cron cuenta con algunas funciones que nos facilitan la vida por mucho. Estas funciones  son para tiempos muy específicos

ordenes:
 
@reboot
@hourly
@daily
@weekley

Sintáxis:

orden comando
 
eg. 

 @reboot aptitude update 


PLUS

Uno de los problemas que tiene Cron, es que el tiempo mínimo (nativo) para la ejecución de tareas es de 1 min. Sin embargo, en caso de necesitar ejecutar algún servicio en segundos podemos hacer los siguiente:

# Dar ping a un equipo cada 15 segundos, todos los días a toda hora, todo el mes todos los meses toda la semana

* * * * * * sleep 15 && ping 192.168.1.254

En este ejemplo aprovechamos el comando 'sleep' para poder temporizar a nivel segundos.


By: Krh3rtz
Happy Hacking!

__Exploiting vulnerabilities, creating new ways through__

Comentarios

Entradas más populares de este blog

Android - Persistencia en sistemas móviles (reverse shell).

Crear pequeño cluster de servervidores en Virtualbox

Buffer Overflows POC - Análisis de Stack, su organización y explotación