Non so perché, ma come dici tu, a volte quando il wifi fallisce, il gestore della rete non trova più la rete.
Penso che il problema sia che il gestore della rete, dopo un errore di connessione wifi, non aggiorna l'elenco wifi (e sembra che il gestore della rete nasconda la rete problematica). Il gestore di rete non ha un'opzione di menu per la nuova scansione e la disabilitazione e abilitazione della casella di controllo wireless nel menu del gestore di rete non impone una nuova scansione wifi (come riavvia il servizio).
Quando il gestore della rete perde la mia connessione wireless e non trova più il mio wifi (e sapevo che il wifi è operativo), eseguo il comando:
sudo iwlist wlan0 scan
Esegue una scansione wifi sull'interfaccia wlan0 (wlan0 è il nome dell'interfaccia wireless nel mio laptop) e mostra le reti wireless disponibili, ma come gestore di rete di effetti collaterali aggiorna automaticamente il suo elenco e trova la rete persa.
Preferisco eseguire il comando manualmente quando si verifica questo problema (la riconnessione della rete non garantisce il ripristino della comunicazione e alcuni programmi dovranno essere riavviati).
Ma, come accennato, puoi farlo cron e puoi farlo senza testare la connettività (il processo di scansione aggiorna il tuo elenco wifi ma non chiude la tua connessione wireless attuale, se sei connesso).
Se preferisci, puoi testare la connettività usando ping o iwconfig e se non sei connesso, avvia la scansione.
Qualcosa di simile a:
#!/bin/bash
if ! ping -c 1 -W 1 your_router_ip &> /dev/null
then
iwlist wlan0 scan
fi
Ma ricorda che questo script deve essere sudo o eseguito con i privilegi di root. Invia solo 1 ping con timeout di 1 secondo.