BATCH – Puertos en escucha en el sistema.

Publicado en BATCH - DOS | Deja un comentario

UNIX – LINUX – Permisos para usar y editar los crontabs.

Antes de iniciar con las sintaxis y comandos cron de Unix, es necesario hacer una rápida revisión al sistema de restricciones para los usuarios. Para que un usuario pueda ejecutar la instrucción crontab, lo primero que se tiene que hacer es revisar y en su caso otorgar permisos de modificar su archivo crontab.

La configuración de los permisos a los usuarios se realiza con dos archivos cron.allow y cron.deny y con base en ellos podemos tener diferentes configuraciones.

Para que un usuario pueda utilizar el comando crontab debe aparecer su nombre en el archivo cron.allow. Si el archivo cron.allow no existiera el usuario podrá acceder si su nombre NO existe en el archivo cron.deny.

Si sólo existe el archivo cron.deny pero está en blanco, todos los usuarios podrán hacer uso del crontab.

Si no existiese ninguno de los dos archivos, solo el usuario root podrá hacer uso de los comandos para programar el cron.

Para la sintaxis de los archivos cron.allow y cron.deny es únicamente necesario escribir un nombre de usuario por línea.

Sintaxis crontab

La sintaxis crontab es la siguiente:

$ crontab [-e | -l | -r ] [usuario]

Le parámetro -e indica la edición del cron, -l ver las tareas programadas en el archivo cron y -r remover (borrar) un archivo cron. Si no se especifica el usuario, el comando se ejecutará para el usuario en sesión

Editar los crontabs

Una vez que ya tienes permisos de usuario para ejecutar crontab vamos a comenzar a editar el archivo crontab con la instrucción:
$ crontab -e
0
Con este comando se abrirá el editor de texto predeterminado, si prefieres utilizar vi como editor de texto predeterminado basta con definir la variable de ambiente EDITOR=vi. Para salir del modo edición basta con escribir q[Enter].

En la configuración del crontab le definiremos la frecuencia con que queremos que se ejecute un proceso y la ubicación del shell que vamos a programar con la siguiente sintaxis que especifica el intervalo de repetición de la tarea:

* * * * * Comando o programa a ejecutar
| | | | |
| | | | |—– día de la semana (0 – 6) (0-> Domingo)
| | | |——- Mes (1 – 12)
| | |——— Día del mes (1 – 31)
| |———– Hora (0 – 23)
|————- Minuto (0 – 59)

La tarea se ejecutará de acuerdo a estos parámetros, por ejemplo si quisieras ejecutar el programa /export/home/respaldo.sh todos los días viernes a las 3 de la mañana la sintaxis sería la siguiente:
0 3 * * 4 /export/home/respaldo

Para especificar más de un valor en un registro se puede utilizar la coma (,) para separar los valores; en el ejemplo anterior puedes definir que la tarea se repita los lunes y los viernes a las 3 de la mañana de la siguiente manera:
0 3 * * 1,4 /export/home/respaldo

Ejemplos de repetición
30 10 * * * Todos los días a las 10:30 hrs.
0 0 1,10,20 * * Los días 1, 10 y 20 de cada mes a la media noche.
0,30 * * * 1 Cada 30 minutos los días lunes, (00:00hrs., 00:30hrs., 01:00hrs. …).
0 22 * 1,2,3,4,5,6,7 * 5 El primer viernes de cada mes a las 10 de la noche.
También puedes programar una tarea para ejecute todos los archivos de una carpeta, por ejemplo:
0 3 * * 1,4 /export/home/actualizareportes/*

Ambiente del cron

Cuando se invoca una tarea programada con el cron se ejecuta con las siguientes variables de ambiente:

HOME=(directorio home del usuario)
LOGNAME=(nombre de usuario)
PATH=/usr/bin:.
SHELL=/usr/bin/sh

Si requieres ejecutar una tarea programada con variables de ambiente diferentes o agregar algunas otras variables de ambiente a la ejecución, es recomendable programar un script o programa shell que defina las variables de ambiente y luego ejecute la tarea.

Log o bitácora de errores

Para configurar que la ejecución de una tarea genere un archivo con la información de la ejecución del cron puedes dirigir mediante la salida estándar hacía el archivo que lo requieras, por ejemplo:
0 3 * * 1,4 /export/home/respaldo > /export/home/respaldo.log
Así se generará o sobrescribirá el archivo /export/home/respaldo.log cada vez que se ejecute la tarea programada.

Archivos cron

Los archivos que determinan el funcionamiento de los trabajos programados con cron en Unix son los siguientes:

/etc/cron.d/cron.allow
/etc/cron.d/cron.deny
/etc/cron.d/FIFO
/var/spool/cron/crontabs/*

Si por alguna razón se cerró el proceso cron y lo quieres reiniciar pero te marca el siguiente error:
! cannot start cron; FIFO exists
! ******* CRON ABORTED ********

Tendrías que borrar el archivo /etc/cron.d/FIFO y ejecutar nuevamente:
$ /usr/sbin/cron

* * * * * /sbin/ping -c 1 192.168.0.1 >> /dev/null
Este crontab ejecuta el comando ping al equipo 192.168.0.1 cada minuto, de cada hora, de cada día, de cada mes, es decir, hace un ping cada minuto.

0 20 * 10 1-5 /sbin/ping -c 1 192.168.0.1 >> /dev/null
El mismo comando, pero sólo se ejecuta los días laborables de la semana (Lun-Vie) a las 8:00 PM en punto y sólo el mes de octubre.

0 0 1,15,28 * * /home/mmonrdz/scripts/respaldar.py
Este crontab ejecuta un script de respaldo en python de lunes a domingo a la medianoche (0:00 AM) los días 1, 15 y 28 de cada mes. ¿Porqué 28 y no 30?, Por febrero 😉

0,50 7,8 * * 1 /home/mmonrdz/scripts/dbcotiza.pl >/dev/null 2>&1
Ejecuta un script que actualiza la base de datos de cotizaciones todos los lunes a las 7:00 AM, 7:50 AM, 8:00 AM y 8:50 AM sin enviar el email de notificación.

45 19 * * * rm /home/newbie/tmp/*
esta línea indica que el contenido del directorio /home/newbie/tmp/ será borrado todos los días a las 7:45 PM.

Ejecutar todos los días un script de copia de seguridad a las 7:00 de la mañana :
0 7 * * * /home/usuario/copiadeseguridad.sh

Ejecutar todos los primeros de mes un script de copia de seguridad a las 7:00 de la mañana :
0 7 1 * * /home/usuario/copiadeseguridad.sh

Ejecutar todos los viernes a las 21:30 un script de copia de seguridad :
30 21 * * 5 /home/usuario/copiadeseguridad.sh

Llamar al comando fetchmail cada 15 minutos :
0,15,30,45 * * * * fetchmail
*/15 * * * * fetchmail

Publicado en Unix - Linux | Deja un comentario

BASH – Captura Dirección IP a partir de nombre de HOSTS.

En el siguiente SCRIPT BASH se muestra la forma de leer un archivo que contiene nombres de HOSTS y apartir de estos se genera un nuevo archivo con la dirección IP y el nombre del Hosts.

Publicado en Unix - Linux | Deja un comentario

BASH – Manejo de funciones.

En el siguiente Script BASH se muestra el uso de funciones y retorno de valores.

Publicado en Unix - Linux | Deja un comentario

BASH – Manejo de Arrays.

Publicado en Unix - Linux | Deja un comentario