Riavvio automatico di wpa_supplicant

L'uso di connessioni di rete wifi è indubbiamente molto comodo ma, rispetto alle classiche connessioni tramite cavo, ha lo svantaggio di poter essere soggetto a maggiore probabilità di disconnessione.

Cosa fare se avete dei sistemi che tendono, per varie ragioni, a perdere la connessione all'access point? Semplice : create uno script che verifica lo stato della connessione ed eventualmente riavvia wpa_supplicant.

Nota: quanto segue è stato testato su un RaspberryPi 3 con installato Raspbian.

Ecco lo script che riavvia wpa_supplicant (modificate il valore di WLAN in modo da inserire il nome della vostra interfaccia di rete wireless)

#!/bin/shWLAN=wlan0DEAD=$(service wpa_supplicant status 2>/dev/null | grep -i dead)YESIP=$( ip addr show $WLAN | grep "inet\b" | awk '{print $2}' | cut -d/ -f1 )CMD=$( ps -eo args | grep wpa_suppl | grep -v grep )if [ "$YESIP" == "" ]; then     DEAD="DEAD"else     ping 8.8.8.8 -c 5 >/dev/null 2>/dev/null     if [ "$?" != "0" ]; then         DEAD="DEAD"     else         DEAD=""     fifiif [ "$DEAD" != "" ]; then     pkill -9 wpa_supplicant     $CMD &  fi

Per automatizzare questo processo potete salvare quanto mostrato qui sopra in un file ( es: /usr/local/bin/restart_wpa_supplicant), dare al nuovo file i permessi di esecuzione e inserirlo nel crontab (di root!) con esecuzione ogni 10 minuti.