View Single Post
Old 04-06-2009, 19:17   #4036
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Cittā: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Ho fatto lo script che mi serviva per far riallineare il router nel caso in cui il SNR Margin sia al di sotto di un certo limite:

Codice:
#!/bin/sh

SNR=`adslctl info --show | grep SNR | sed 's/[^0-9]//g' | sed 's/[0-9][0-9][0-9][0-9]$//'`   
   
if [ ${#SNR} = 0 ]; then
   #maybe it's retraining
   exit 1
fi

RETRAIN_SNR=`nvram get adsl_retrain_snr | sed 's/name=//'`

if [ $SNR -gt $RETRAIN_SNR ]; then
   #no need to retrain line
   exit 0
fi

#line will be retrained
uptime >> /tmp/retrain.log
echo "SNR Margin value is $SNR dB and limit is $RETRAIN_SNR...training line" >> /tmp/retrain.log
adslctl configure --snr `nvram get adsl_snr | sed 's/name=//'`
Testato sul router funziona perfettamente.

# nvram set adsl_retrain_snr=10
# /tmp/retrainlimit.sh
# cat /tmp/retrain.log
18:20:10 up 10:30, load average: 0.00, 0.00, 0.00
SNR Margin value is 10 dB and limit is 10...training line
# nvram set adsl_retrain_snr=6
# /tmp/retrainlimit.sh
# cat /tmp/retrain.log
18:20:10 up 10:30, load average: 0.00, 0.00, 0.00
SNR Margin value is 10 dB and limit is 10...training line

Ora devo solo impacchettare il nuovo firmware e trovare il modo di farlo girare una volta ogni paio di minuti (a quanto pare devo fare un loop continuo, visto che crontab č praticamente inutilizzabile).

Ultima modifica di cionci : 04-06-2009 alle 19:21.
cionci č offline   Rispondi citando il messaggio o parte di esso