Não sei por que, mas, como você mencionou, às vezes, quando o wifi falha, o gerenciador de rede não encontra a rede novamente.
Eu acho que o problema é que o gerenciador de rede, após uma falha na conexão wifi, não atualiza a lista de wifi (e parece que o gerenciador de rede oculta a rede problemática). O gerenciador de rede não possui uma opção de menu de re-varredura e desativar e ativar a caixa de seleção sem fio no menu do gerenciador de rede não força uma nova varredura de wifi (como reiniciar o serviço).
Quando o gerenciador de rede perde minha conexão wireles e não encontra meu wifi novamente (e eu sabia que o wifi está funcionando), eu executo o comando:
sudo iwlist wlan0 scan
Ele executa uma verificação wifi na interface wlan0 (wlan0 é o nome da interface sem fio no meu laptop) e mostra as redes sem fio disponíveis, mas como um efeito colateral, o gerenciador de rede atualiza automaticamente sua lista e encontra a rede perdida.
Prefiro executar o comando manualmente quando esse problema ocorrer (a reconexão da rede não garante a retomada da comunicação e alguns programas precisarão ser reiniciados).
Mas, como você mencionou, você pode agendá-lo e fazê-lo sem testar a conectividade (o processo de verificação atualiza sua lista de Wi-Fi, mas não fecha sua conexão sem fio atual, se você estiver conectado).
Se preferir, você pode testar a conectividade usando ping ou iwconfig e, se não estiver conectado, inicie a verificação.
Algo como:
#!/bin/bash
if ! ping -c 1 -W 1 your_router_ip &> /dev/null
then
iwlist wlan0 scan
fi
Mas lembre-se de que esse script deve ser sudo ou executado com privilégios de root. Ele envia apenas 1 ping com 1 segundo tempo limite.