Se la connessione UMTS cade ogni tanto e la Fonera 2.0n non si riconnette ecco come fare.
Sto utilizzando la Fonera 2.0n con firmware v2.3.6.1, una chiavetta UMTS HUAWEI K3765 con SIM Vodafone ricaricabile con piano “Internet Sempre Smart” (quella da € 9,00 al mese per intenderci).
Dopo aver installato la chiavetta usb-UMTS in questione (vedi mio articolo precedente) ho notato che la Fonera 2.0n saltuariamente non permetteva più la navigazione internet.
Dai controlli effettuati mi è parso di capire che la connessione UMTS Vodafone ogni tanto “vada giù” ciò comporta che la chiavetta non riesce più a riconnettersi in automatico. Per fare rifunzionare tutto è necessario fare il reboot della Fonera 2.0n.
Sarà un problema di Vodafone o della chiavetta in mio possesso o della Fonera 2.0n ?
Sinceramente non lo so e probabilmente non lo saprò mai con certezza, quindi non mi è rimasta altra scelta di trovare una soluzione pratica per ovviare al fastidioso problema.
Il concetto è semplice:
controllo ciclicamente se un sito sicuramente esistente e online (www.google.com) è raggiungibile; se non lo è, faccio il reboot della Fonera 2.0n.
Per fare questo si utilizza il demone “crond”, occorre però configurare adeguatamente la Fonera 2.0n in modo da farlo funzionare correttamente, vediamo come:
Collegarsi in SSH alla Fonera ed inserire la password quando richiesto.
Una volta loggati se si esegue il seguente comando:
crontab -l
si potrà avere come risposta un messaggio che indica la mancanza di directory o file;
infatti si deve creare, se non esiste già, una directory chiamata “crontabs” in /etc, quindi eseguire il seguente comando:
mkdir /etc/crontabs
all'interno di /etc/crontabs si dovrà creare un file chiamato “root” che riporterà i comandi che dovranno essere utilizzati dal demone crond come root (vi consiglio di cercare un po' di informazioni interessanti su CRON).
Occorre quindi creare ed editare il file root nel seguente modo:
vim /etc/crontabs/root
premere il tasto “i” per abilitare la modalità editor, e poi scrivere la seguente riga:
*/2 * * * * sh /etc/init.d/ControlloPing
a questo punto premere il tasto “esc” e poi “:w” per salvare e “:q” per chiudere. Controllare che il file sia stato correttamente scritto utilizzando il seguente comando:
cat /etc/crontabs/root
Nella riga copiata i primi 3 caratteri (*/2) stanno a significare che il comando verrà eseguito ogni 2 minuti per sempre.
Ora dovremmo creare il file di script “ControlloPing ” in /etc/init.d/ . Occorre quindi creare ed editare il file nel seguente modo:
vim /etc/init.d/ControlloPing
premere il tasto “i” per abilitare la modalità editor, e poi copiare il seguente codice:
#!/bin/sh
STRING=www.google.com #indirizzo di controllo
fail=0
ok=0
X=0
data=`date`
#------si inizia il controllo
echo "script per controllo ping"
for X in 1 2 # inserire il numero di controlli da eseguire
do
echo "Controllo n. $X"
if `/bin/ping -c 1 > /dev/null $STRING` # Controllo se il ping OK
then
ok=`expr $ok + 1`
# echo "Test ok --> $data " >> /home/testok # Scrivo il risultato positivo su un file per vedere se funziona
else
fail=`expr $fail + 1`
echo "offline test n. $fail --> $data " >> /home/test # Scrivo il risultato negativo su un file per vedere se funziona
if `/bin/ping -c 1 > /dev/null $STRING` # Ricontrollo il ping
then
echo "Test n. $fail ok --> $data " >> /home/test # Scrivo il risultato positivo su un file per vedere se funziona
else
fail=`expr $fail + 1`
echo "offline test n. $fail --> $data " >> /home/test # Scrivo il risultato negativo su un file per vedere se funziona
echo "REBOOT --> $data " >> /home/test # Scrivo il risultato negativo su un file per vedere se funziona
reboot # Faccio il reboot della fonera se ci sono 2 errori
fi
fi
# X=`expr $X + 1`
done # reboot # Faccio il reboot della fonera se ci sono 2 errori
Copiato il codice premete il tasto “esc” e poi “:w” ed infine “:q”.
Il codice è commentato e molto semplice, controlla per 2 volte se il ping verso l'host di riferimento avviene regolarmente, se per 2 volte nello stesso ciclo l'host non viene raggiunto viene effetuato il reboot.
Le informazioni sugli errori vengono scritte sul file /home/test .
Il file appena creato però non è eseguibile, per cui ora occorre digitare il seguente comando
chmod +x /etc/init.d/ControlloPing
Molto bene, ora abbiamo il file /etc/crontabs/root in cui si dice che ogni 2 minuti si deve eseguire lo script /etc/init.d/ControlloPing che controlla per 2 volte se la connessione è ok e riavvia la Fonera se non lo è.
Il demone cron però molto probabilmente non sta girando, per controllare digitate:
ps ax | grep cron
Se compare solo una riga in cui è riportato qualcosa di simile a questo:
11087 root 1988 S grep cron
allora avete la certezza che NON sta girando alcun demone cron.
Occorre lanciare il demone “crond”, ma ovviamente è necessario fare in modo che si avvii in automatico ad ogni reboot.
Potete scegliere di inserire il seguente comando:
crond -c /etc/crontabs/
in uno script d'avvio presente in /etc/rc.d che sia successivo a quello di avvio della connessione UMTS (potete metterlo in coda al file stesso di connessione) se digitate
ls /etc/rc.d
vedrete i file interessati simili a questi:
K40network S05configrestore S12ra_esw S20thinclient S40network S50avahi-daemon S60led S95miniupnpd K99umount S05luci_fixtime S12wpa S39usb S42fonstate_early S50dropbear S90k3765 S96fonstate S00configure S10boot S20fstab S40mgmtnetwork S45firewall S50qos S95done S99sysctl
Nel mio caso, come riportato nell'articolo in cui descrivevo le modalità di configurazione di una chiavetta usb UMTS, creai il file “k3765” e lo resi script d'avvio.
Ho deciso quindi di inserire in coda al file S90k3765 il comando descritto.
Quindi ho digitato:
vim /etc/rc.d / S90k3765
ho premuto “i” per editare ed ho inserito in fondo le seguenti 2 righe:
sleep $sec
crond -c /etc/crontabs/
Fatto ciò ho premuto “esc” e poi “:w” e ”:q”.
A questo punto il demone non sta ancora funzionando ma al prossimo riavvio partirà inesorabile.
Bene, adesso se volete per provare se tutto và, potete apportare alcune piccole modifiche allo script “ControlloPing” in modo che scriva se il ping è OK sul file /home/testok
Mi raccomando, dopo le prove commentate di nuovo la riga per evitare di creare file inutili.
Ecco per comodità alcune informazioni condensate:
Per vedere se il demone cron funziona digitare:
ps ax | grep cron
Per vedere i PID dei processi attivi digitare:
ps -A
Per killare un processo:
kill -9 [pid]
Per avviare CROND:
crond -c /etc/crontabs/
crond è nella seguente posizione:
/usr/bin
crontab è nella seguente posizione:
/usr/sbin
crontabs è una cartella nella seguente posizione:
/etc
dentro crontabs [/etc/crontabs] vi deve essere il file root
crontab legge il file /etc/crontabs/root infatti per vedere cosa c'è dentro basta
digitare:
crontab -l
Se lo si vuole editare digitare:
crontab -e
ma è meglio usare vim per apportare modifiche:
*/2 * * * * echo 'Forza SAMPDORIA'
al posto di echo.... inserire l'indirizzo dello script da lanciare
Nello script fate attenzione agli apici inversi ` che sono diversi dagli accenti ''
Ciao
| Succ. > |
|---|






