Ayuda con script y crontab

Imagen de xime

Forums: 

Buenas amigos de ecualug, tengo mi servidor Centos que corre un squid y hace de nat para la red interna. Se me ocurrió la genial idea de cambiar la ip publica cada 2 días, pero de forma automática, (de 3 disponibles que tengo) para que no tengan problemas con Hotmail, megaupload, y páginas de ese tipo, (al menos no tan seguido =P)

Entonces realice un script por cada ip para que cambie la dirección de la eth0, y usando el crontab para que lo ejecute automáticamente. Pero en las pruebas que estaba realizando, si ejecuto el script manualmente poniendo: ./script se ejecuta normalmente, y cambia la ip de la tarjeta, pero al poner el crontab, solo me sale “you have a new email” pero la ip no cambia, no funciona el experimento =( ¿Sugerencias?

Mi script de cambio de ip:

[quote]#!/bin/sh
ifconfig eth0 1XX.XX.XX.26 netmask 255.255.XXX.XXX up
sleep 2s
# Flush de reglas
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
.
.
.
[/quote]

Tengo uno de estos por cada ip.

Crontab:
[quote]15 0 * * * /usr/bin/script[/quote]

¿Estoy cometiendo algun sacrilegio en el mundo de Linux? Alguna idea de cómo hacer lo de los cambios de ip?

Debes tener en cuenta que hay

Debes tener en cuenta que hay varias maneras de configurar el cron, por el mensaje de error que tienes "/bin/sh: root: command not found" me da la impresión de que estás usando el comando "crontab -e" y agregando una línea como esta:

0 */2 * * * root /home/user/script.sh >> /home/user/cronlog.log

Lo cual estaría incorrecto puesto que la palabra "root" indica el usuario que ejecutará y no es necesario especificarla en este caso.

Otra manera de configurar el cron es usando el archivo "/etc/crontab", donde si es necesario especificar el usuario que ejecutará la tarea. Si usas el método de editar el archivo "/etc/crontab" deberás reiniciar el servicio de "crond" para que se apliquen los cambios.

En resumen, si usas el comando "crontab -e", la línea debería ser:

0 */2 * * * /home/user/script.sh >> /home/user/cronlog.log

Pero si usas el archivo "/etc/crontab" (no olvidarás reniciar el servicio crond cuando modifiques), la línea debería ser:

0 */2 * * * root /home/user/script.sh >> /home/user/cronlog.log

Saludos,

----
Edwin Boza
about.me/edwinboza

No me explico por qué

Imagen de Jonas

Tienes un archivo crontab sin variables, tu archivo debe quedar así:


SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

#Tareas
#m h d m w
15 0 * * * root /usr/bin/script >> /home/user/cronlog.log

Al estar en /usr/bin el script no es necesario definir nuevamente el PATH pero lo hacemos por si acaso...
No olvides los permisos de ejecución.
Que distro usas?

Saludos

Páginas