Reconectar o WiFi após queda de sinal
Crie um arquivo na pasta de dispatcher do NetworkManager:
/etc/NetworkManager/dispatcher.d/99-reconectar-wifi
Cole o conteúdo abaixo:
#!/bin/bash
INTERFACE="$1"
ACTION="$2"
# Se a interface for vazia, identifica a placa Wi-Fi
if [ -z "$INTERFACE" ] || [ "$INTERFACE" = "--" ]; then
INTERFACE=$(nmcli -t -f DEVICE,TYPE device | grep ":wifi" | cut -d: -f1 | head -n 1)
fi
# Só agimos se o rádio estiver ligado (não foi desligado manualmente)
if [ "$(nmcli radio wifi)" = "enabled" ]; then
# Gatilhos de queda ou mudança de conectividade
if [[ "$ACTION" == "down" || "$ACTION" == "disconnected" || "$ACTION" == "connectivity-change" ]]; then
# Evita múltiplas instâncias do script rodando juntas
PIDFILE="/tmp/wifi_recon_monitor.pid"
if [ -f $PIDFILE ]; then
kill $(cat $PIDFILE) > /dev/null 2>&1
fi
echo $$ > $PIDFILE
# Loop Infinito
COUNT=1
while true; do
# Se o usuário desligar o Wi-Fi no menu, o script para
if [ "$(nmcli radio wifi)" != "enabled" ]; then
logger "Wi-Fi Check: Abortando (Rádio desativado pelo usuário)."
rm $PIDFILE
break
fi
# Checa o estado atual
STATE=$(nmcli -t -f DEVICE,STATE device | grep "^$INTERFACE:" | cut -d: -f2)
if [ "$STATE" = "connected" ]; then
logger "Wi-Fi Check: Conectado com sucesso após $COUNT tentativa(s)."
rm $PIDFILE
break
else
logger "Wi-Fi Check: [Tentativa $COUNT] Rede offline ($STATE). Tentando novamente em 60s..."
# Rescan e tentativa de conexão
nmcli device wifi rescan
nmcli device connect "$INTERFACE" > /dev/null 2>&1
((COUNT++))
sleep 60
fi
done
[ -f $PIDFILE ] && rm $PIDFILE
fi
fi
Sempre que o WiFi se desconectar, ele tentará se reconectar até conseguir.