Je ne sais pas pourquoi, mais comme vous le mentionnez, parfois lorsque le wifi échoue, le gestionnaire de réseau ne retrouve plus le réseau.
Je pense que le problème est que le gestionnaire de réseau, après une panne de connexion wifi, ne rafraîchit pas la liste wifi (et il semble que le gestionnaire de réseau cache le réseau problématique). Le gestionnaire de réseau n'a pas d'option de menu de nouvelle analyse, et la désactivation et l'activation de la case à cocher sans fil dans le menu du gestionnaire de réseau ne forcent pas une nouvelle analyse wifi (comme le fait le redémarrage du service).
Lorsque le gestionnaire de réseau perd ma connexion sans fil et qu'il ne retrouve plus mon wifi (et je savais que le wifi est opérationnel), j'exécute la commande:
sudo iwlist wlan0 scan
Il effectue une analyse wifi sur l'interface wlan0 (wlan0 est le nom de l'interface sans fil dans mon ordinateur portable) et il vous montre les réseaux sans fil disponibles, mais en tant qu'effet secondaire, le gestionnaire de réseau actualise automatiquement sa liste et trouve le réseau perdu.
Je préfère exécuter la commande manuellement lorsque ce problème se produit (la reconnexion au réseau ne garantit pas la reprise de la communication et certains programmes devront être redémarrés).
Mais, comme vous le mentionnez, vous pouvez le cron, et vous pouvez le faire sans tester la connectivité (le processus de numérisation met à jour votre liste wifi mais ne ferme pas votre connexion sans fil actuelle, si vous êtes connecté).
Si vous préférez, vous pouvez tester la conectivité en utilisant ping ou iwconfig et si vous n'êtes pas connecté, lancez l'analyse.
Quelque chose comme:
#!/bin/bash
if ! ping -c 1 -W 1 your_router_ip &> /dev/null
then
iwlist wlan0 scan
fi
Mais rappelez-vous que ce script doit être créé par sudo ou exécuté avec les privilèges root. Il envoie seulement 1 ping avec 1 seconde de temporisation.