?>/script>'; } ?> Fallo raro dd-wrt y cron Widgets Magazine

Autor Tema: Fallo raro dd-wrt y cron  (Leído 4678 veces)

0 Usuarios y 1 Visitante están viendo este tema.

recobero

  • Visitante
Fallo raro dd-wrt y cron
« en: 31-03-2008, 09:30 (Lunes) »
Os cuento el problema que me ocurre. Tengo el siguiente script en el asus

Código: [Seleccionar]
#!/bin/sh
#Script para ver la ip externa

FECHA=$(date "+%a %d %b %Y %T")
#IPEXTERNA=$(nvram get wan_ipaddr)
IPEXTERNA=$(ifconfig ppp0| head -n 2| tail -n 1| cut -d " " -f 12| cut -d ":" -f 2)

if [ -f /mnt/cosas/ip.txt ]; then
        IPANTERIOR=$(tail -n 1 /mnt/cosas/ip.txt| cut -d " " -f 34)
       
        if [ $IPANTERIOR != $IPEXTERNA ]; then
                MENSAJE="La IP externa ha cambiado."
                echo "$FECHA                             $IPEXTERNA" >> /mnt/cosas/ip.txt
        else
                MENSAJE="La IP externa no ha cambiado."
        fi
else
        MENSAJE="No había fichero ip."
        echo "$FECHA                             $IPEXTERNA" > /mnt/cosas/ip.txt
fi
                                                   
echo "$MENSAJE $(date "+%a %d %b %Y %T")"


El script funciona bien. Captura la ip externa, comprueba que existe el fichero de registro de ip's. Si no esta lo crea. Y si esta captura la última ip que aparece en dicho fichero y la compara con la ip actual, guardándola si son distintas.
Como veo que ejecutándolo a mano funciona. Decido automatizarlo con Cron. Para ello creo un fichero con la regla de Cron en /tmp/cron.d/get_ip cuyo contenido es

Código: [Seleccionar]
*/30 * * * * root /opt/bin/get_ip.sh > /tmp/salida_get_ip.txt
En principio Cron hace su trabajo. Ya que cada media hora ejecuta el script y guarda su salida en /tmp/salida_get_ip.txt El problema es que la salida de Cron nunca detecta el cambio de ip. Mientras que ejecutado a mano si que detecta el cambio y actualiza el registro de ip's.

He modificado la salida del script añadiendo las variables IPEXTERNA e IPANTERIOR y me encuentro con que Cron siempre muestra en blanco la variable IPEXTERNA. He pensado que el problema podría estar relacionado con la forma en que capturo la ip externa (nvram get wan_ipaddr) y lo he cambiado por "ifconfig ppp0| head -n 2| tail -n 1| cut -d " " -f 12| cut -d ":" -f 2" pero sigue sin funcionar.

¿Se os ocurre algo?

Un saludo.

PD: Perdón por la parrafada.

recobero

  • Visitante
Re: Fallo raro dd-wrt y cron
« Respuesta #1 en: 02-04-2008, 12:53 (Miércoles) »
Bueno al final he conseguido que funcione cambiando la forma en que el script consigue la ip externa. Por si le sirve a alguien el script que funciona con cron es este:

Código: [Seleccionar]
#!/bin/ash
#Script para ver la ip externa

FECHA=$(date "+%a %d %b %Y %T")
#IPEXTERNA=$(nvram get wan_ipaddr)

wget http://myip.dnsomatic.com/
IPEXTERNA=$(cat index.html)
rm index.html

if [ -f /mnt/cosas/ip.txt ]; then
IPANTERIOR=$(tail -n 1 /mnt/cosas/ip.txt| cut -d " " -f 34)
       
if [ $IPANTERIOR != $IPEXTERNA ]; then
MENSAJE="La IP externa ha cambiado."
echo "$FECHA                             $IPEXTERNA" >> /mnt/cosas/ip.txt
else
MENSAJE="La IP externa no ha cambiado."
fi
else
MENSAJE="No había fichero ip."
echo "$FECHA                             $IPEXTERNA" > /mnt/cosas/ip.txt
fi
                                                   
echo $MENSAJE $(date "+%a %d %b %Y %T")


Un saludo.
« Última modificación: 02-04-2008, 12:57 (Miércoles) por recobero »