Я не знаю почему, но, как вы упомянули, иногда при сбое wifi менеджер сети не находит сеть снова.
Я думаю, что проблема в том, что сетевой администратор после сбоя соединения Wi-Fi не обновляет список Wi-Fi (и кажется, что сетевой менеджер скрывает проблемную сеть). Диспетчер сети не имеет опции меню повторного сканирования, а отключение и включение беспроводного флажка в меню диспетчера сети не вызывает новое сканирование Wi-Fi (как при перезапуске службы).
Когда администратор сети теряет соединение с Wireles и снова не находит мой wifi (и я знаю, что wifi работает), я выполняю команду:
sudo iwlist wlan0 scan
Он выполняет сканирование Wi-Fi на интерфейсе wlan0 (wlan0 - это название беспроводного интерфейса в моем ноутбуке) и показывает доступные беспроводные сети, но в качестве побочного эффекта сетевой менеджер автоматически обновляет свой список и находит потерянную сеть.
Я предпочитаю выполнять команду вручную, когда возникает эта проблема (переподключение сети не гарантирует возобновления связи, и некоторые программы необходимо будет перезапустить).
Но, как вы упоминаете, вы можете справиться с этим, и вы можете сделать это без проверки подключения (процесс сканирования обновляет ваш список Wi-Fi, но он не закрывает ваше текущее беспроводное соединение, если вы подключены).
Если вы предпочитаете, вы можете проверить связь с помощью ping или iwconfig, а если вы не подключены, запустить сканирование.
Что-то вроде:
#!/bin/bash
if ! ping -c 1 -W 1 your_router_ip &> /dev/null
then
iwlist wlan0 scan
fi
Но помните, что этот скрипт должен быть sudoed или выполнен с привилегиями root. Он отправляет только 1 пинг с тайм-аутом 1 секунда.