Il blog è stato spostato! Redirecting...

Stai per essere spostato sul nuovo indirizzo. Se non funziona vai su http://www.lejubila.net e aggiorna il tuo bookmark.

7.1.09

Linksys wrt54gl e dd-wrt: utilizzare i led SecureEasySetup come indicatore di connettività

Il firmware originale del wrt54gl implementa il cosiddetto SecureEasySetup, ovvero la possibilità di switchare in un security mode più o meno restrittivo, e dandone indicazione per mezzo del led con il logo Cisco System (immagine qui accanto).

La cosa interessante è che con il firmware dd-wrt è possibile fare accendere o spengere tale led a piacimento in quanto collegato ad una interfaccia gpio (general purpose input output).
In realtà non è un solo led ma bensì due che quando accesi rispettivamente sono di colore bianco e arancio.

Come descrivevo in altri post, uso un Linksys wrt54gl con firmware dd-wrt v.24 come repeater per collegarmi ad internet per mezzo di un router wifi che stà dietro una rete wireless.
Utilizzando questo tipo di modalità può capitare, molto raramente, che cada la connessione wirless e che quindi internet non sia più raggiungibile. Altri problemi di connettività, che per la verità di verificano più spesso, sono legati a disfunzioni del provider con "guasti" sulla linea.

Per distinguere questi due casi a colpo d'occhio ho deciso di pilotare i led sopra indicati e di accenderli/spengerli in base al caso verificato.

Ecco qui di seguito i diversi casi che si possono verificare:

Led arancione (ambra) accesso: connessione internet funzionante

















Led bianco acceso: connessione internet non funzionate ma gateway raggiungibile (molto probabilmente il malfunzionamento è dovuto da un "guasto" del provider)

















Nessun led accesso: connessione ad internet non funzionante a causa connessione con il gateway interrotta

















L'interfaccia gpio presente sul wrt54gl pilota anche altri led (output) e pulsanti (input), per un approfondimento su questo aspetto rimando alla pagina del wiki di dd-wrt Useful_Scripts - GPIO_Info_for_Linksys_WRT.
Per quanto ci interessa basta sapere che il led arancione si accende con
gpio disable 3
e si spenge con
gpio enable 3

mentre il led bianco si accende con
gpio disable 2
e si spenge con
gpio enable 2

Per implementare la funzione descritta sopra ho realizzato un semplice script che richiamo ogni minuto dal crontab.

Lo script è il seguente:

upline
#!/bin/sh
#
ambra_on="gpio disable 3"
ambra_off="gpio enable 3"
bianco_on="gpio disable 2"
bianco_off="gpio enable 2"

date > /tmp/upline.log

# Check connessione internet
ping -c 5 google.com >> /tmp/upline.log
if [ $? == 0 ]; then
# accende luce ambra
echo "ambra on"
$bianco_off
$ambra_on
else
# controllo connessione default gateway
ping -c 5 `findgw -1` >> /tmp/upline.log
if [ $? == 0 ]; then
# accende luce bianca
echo "bianco on"
$ambra_off
$bianco_on
else
# spenge tutto
echo "tutto off"
$bianco_off
$ambra_off
fi
fi

Come è possibile vedere la verifica sul funzionamento di internet viene eseguita impartendo un ping ad un host pubblico sicuramente funzionante, in questo caso google.com, mentre sempre con un ping viene testata la connessione con il gateway il cui indirizzo viene ricavato con lo script findgw il cui codice è il seguente

#!/bin/sh
#
# Mostra il default gateway

SCRIPT=`basename $0`

if [ "$1" == "-h" ] || [ "$1" == "--help" ]; then
echo -e "\n$SCRIPT v 0.2 01/01/2009\n"
echo -e "Parametri:"
echo -e " -h, --help\tQuesto messaggio"
echo -e " -1\t\tSe ci sono piu' default gateway ne restituisce soltanto il primo"
echo -e ""
exit 0
fi

ONLYFIRST=""

if [ "$1" == "-1" ]; then
ONLYFIRST="-m 1"
fi

route -n |grep $ONLYFIRST ^0.0.0.0 | tr -s ' ' | cut -d' ' -f2

exit 0

L'inserimento del comando upline nel crontab avviene inserendo questa linea
* * * * * root /jffs/usr/bin/upline
direttamente dall'interfaccia web di dd-wrt posizionandosi sul menu "Amministrazione/Gestione/Cron":











Gli script sopra menzionati sono stati posizionati nel path /jffs/usr/bin/ dopo che è stato abilitato il supporto al filesystem jffs2 sempre da interfaccia grafica nel menu "Amministrazione/Gestione/Jffs2":

Nessun commento:

Posta un commento