In questo articolo vi descriverò come configurare il vostro Raspberry Pi, nel caso che questi perda la connessione WiFi.
Quanto troverete descritto di seguito è un semplice modo automatizzato per cercare di ripristinare la connessione di rete WiFi, che verrà effettuato da un apposito script nel momento in cui il Raspberry Pi si accorgerà di non poter comunicare attraverso la connessione di rete WiFi .

NOTA: Questo problema può verificarsi quando il Raspberry è connesso in WiFi e l’Access Point si rende non disponibile per qualche tempo (Access Point dello smartphone, Access Point fisso molto disturbato o distante dal vostro RPi).
Questa soluzione è applicabile anche per l’installazione PISTAR, ma con la raccomandazione di NON effettuare l’installazione attraverso la finestra SSH Access dell’applicativo pistar, ma tramite una connessione SSH esterna verso l’IP del Raspberry in questione.

 

Connessione in SSH da terminale verso il vostro Raspberry

Connettetevi da un PC, tramite un terminale in SSH o con PuTTY al vostro Raspberry, (ammettendo che l’IP del vostro RPi sia 192.168.1.102), in questo modo:

ssh pi@192.168.1.102 

La password, se non l’avete cambiata, è raspberry .

 

Creare lo script di controllo della connessone di rete

Una volta connessi al vostro Raspberry, lo controllerete come da un comune terminale; da qui digitare:

nano cercarete.sh

per creare il nuovo file cercarete.sh ; quindi copiare ed incollare il seguente codice dello script, ideato inizialmente da Mario Pascucci, e successivamente leggermente rivisto ed aggiornato da alcuni di noi OM.
Modificare, se ne avete uno migliore, il valore dell’IP dato a TARGET (IP di sicura presenza e funzionamento in Internet, per controllare la connessione di rete verso l’esterno) e sicuramente il valore IP dato a PROPRIOIP (IP che avete assegnato al Raspberry), inserendo degli indirizzi corretti.
Sono gli unici due valori da cambiare, se avete deciso di cambiare anche il valore IP di TARGET, con uno a voi più confacente.

#!/bin/bash
TARGET=1.1.1.1
PROPRIOIP=192.168.1.102
LOG=/dev/null

ping -c 2 $TARGET
RIS=$?
if [ $RIS -ne 0 ]; then
echo $(date -u) "Errore impostaz. valore TARGET / Gateway">>$LOG
sudo service networking restart
else
echo ok
fi

ip="$(/sbin/ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}')"
echo servizio funzionante $ip
if [ "$ip" != "$PROPRIOIP" ]; then
echo $(date -u) "Errore impostaz. valore PROPRIOIP $ip">>$LOG
sudo service networking restart
else
echo ok, analisi completata
fi

al termine, digitare CTRL+X per uscire e salvare i dati. Salvare il file rispondendo yes.

Successivamente digitare il seguente comando per impostare le proprietà di esecuzione dello script appena creato.

chmod 755 cercarete.sh

 

Test di funzionamento dello script

Per provarne il funzionamento, digitare il seguente comando:

./cercarete.sh

dovrebbe apparire del testo simile al seguente:

pi@raspberry_BVK:~ $ ./cercarete.sh
PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data.
64 bytes from 1.1.1.1: icmp_seq=1 ttl=49 time=178 ms
64 bytes from 1.1.1.1: icmp_seq=2 ttl=49 time=66.4 ms
--- 1.1.1.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 66.499/122.487/178.475/55.988 ms
ok
servizio funzionante 
pi@raspberry_BVK:~ $

 

Automatizzare l’esecuzione dello script

Se tutto funziona correttamente, provvederemo ad automatizzare l’esecuzione di questo servizio, inserendolo nel servizio Crontab.
Per farlo, digitare il comando:

sudo crontab -e

nel caso venga richiesto il tipo di editor da utilizzare:

no crontab for root - using an empty one
Select an editor. To change later, run 'select-editor'.
1. /bin/ed
2. /bin/nano <---- easiest
3. /usr/bin/mcedit
4. /usr/bin/vim.tiny

digitare 2 per scegliere nano.

Di seguito, vi apparirà del testo simile a questo:

# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
[ Lette 22 righe ]
^G Guida ^O Salva ^W Cerca ^K Taglia ^J Giustifica^C Posizione
^X Esci ^R Inserisci ^\ Sostituisc^U Incolla ^T Ortografia^_ Vai a riga




Alla fine del file, digitare o copiare ed incollare (tasto destro del mouse) il seguente codice:

0 * * * * /home/pi/cercarete.sh
5 * * * * /home/pi/cercarete.sh
10 * * * * /home/pi/cercarete.sh
15 * * * * /home/pi/cercarete.sh
20 * * * * /home/pi/cercarete.sh
25 * * * * /home/pi/cercarete.sh
30 * * * * /home/pi/cercarete.sh
35 * * * * /home/pi/cercarete.sh
40 * * * * /home/pi/cercarete.sh
45 * * * * /home/pi/cercarete.sh
50 * * * * /home/pi/cercarete.sh
55 * * * * /home/pi/cercarete.sh

Uscire dall’editor premendo CTRL+X e digitare Yes per salvare le modifiche apportate.

Riavviare il servizio di Crontab, con il seguente comando:

sudo service cron restart

 

Apportate queste modifiche, ogni 5 minuti verrà lanciato lo script e verrà effettuato il controllo di connessione Wifi verso l’Access Point o il Router ADSL.
In caso di errore di connessione verrà effettuato il riavvio del servizio di rete del Raspberry Pi.

Spero che quanto descritto in questo articolo possa risolvere i vostri problemi di connessione.

’73 de Paolo IV3BVK (K1BVK)

Grazie per aver visitato questo blog, lasciate un vostro commento a questo post...