ciao,
ultimamente ho problemi con l'aggiornamento del DNS dinamico.
Come quasi tutti gli script che ho visto dovrebbe funzionare in questo
modo:
- rilevamento dell'IP da fonte esterna (sono dietro a un router)
- confronto con il vecchio IP memorizzato in un file ip.cache
- se i due IP sono diversi invio della richiesta di aggiornamento
all'URL specificata; invio di email a root segnalando l'aggiornamento;
sostituzione dell'IP in ip.cache.
- se i due IP sono uguali invia un email a root con msg "nessun bisogno
di aggiornare il DNS"
questo lo script:
#!/bin/bash
OLDIP=`</var/state/ip.cache`
MYIP=`/usr/bin/curl -s http://<URL per Rilevamento IP> | grep "your ip" \
| awk '{ print $5 }'`
if [ "$MYIP" != "$OLDIP" ]; then
(echo `/usr/bin/curl -s
'http://freedns.afraid.org/dynamic/update.php?<mia stringa>'` | \
mail -s "checkip log" root@localhost) &&(echo "$MYIP" > \
/var/state/ip.cache)
else
echo "nessun bisogno di aggiornare il DNS" | mail -s "checkip \
log" root@localhost
fi
L'errore e' che:
/usr/bin/curl -s 'http://freedns.afraid.org/dynamic/update.php?<mia stringa>'
lanciato da console esegue tranquillamente l'aggiornamento e mi
restituisce un messaggio sensato del tipo "IP xxx.xxx.xxx.xxx agiornato
in tot secondi", mentre quando la lancia lo script mi restituisce il
codice HTML di una pagina (o meglio dell'header di una pagina" e non
procede all'aggiornamento.
In questo modo pero' la seconda parte del comando, cioe' l'aggiornamento
di ip.cache, viene comunque effettuata rendendo vani i successivi
controlli che trovano $MYIP = $OLDIP.
Cosa sto sbagliando? pensavo di inserire un ulteriore controllo
sull'output dell'aggiornamento ma non mi sembra sensato se il problema
e' il funzionamento della stringa all'interno dello script.
--
Pace e Amore
vic
**********************************
* Freedom has a taste of its own *
**********************************
|