Erstellen eines Bash-Skripts, das bei Verbindungsverlust die Verbindung zum AP wiederherstellt

Erstellen eines Bash-Skripts, das bei Verbindungsverlust die Verbindung zum AP wiederherstellt

Ich habe Probleme mit dem WLAN unter Ubuntu. Ich habe versucht, das System zu aktualisieren, aber es passiert immer noch das Gleiche. Ich verliere plötzlich die Verbindung zu meinem Router und wenn ich auf die WLAN-Leiste drücke, erkennt das System keine APs. Ich muss die Option „WLAN aktivieren“ deaktivieren und sie dann erneut aktivieren, damit es funktioniert. Die Verbindung wird automatisch wiederhergestellt.

Ich denke darüber nach, ein Bash-Skript zu erstellen, das erkennt, wenn die Verbindung zwischen PC und Router aus irgendeinem Grund getrennt wird, und das WLAN nach der Trennung deaktiviert und dann wieder aktiviert. Ich meine, ist so etwas wie ein automatisches Zurücksetzen der Verbindung möglich?

ich denke, ich muss das verwenden

nmcli nm wifi off
nmcli nm wifi on

aber wie kann ich das Skript wissen lassen, ob die Verbindung des PCs zum WLAN getrennt ist?

Antwort1

Es ist einfacher als Sie denken:

#!/bin/bash

if ! [ "$(ping -c 1 google.com)" ]; then
    nmcli nm wifi off
    nmcli nm wifi on
fi

Anschließend können Sie einen Cron-Job verwenden, damit dieses Skript jede Minute ausgeführt wird.

Antwort2

Obwohl die Antwort richtig ist, müssen Sie Folgendes berücksichtigen:

1) Es funktioniert, egal ob der Benutzer angemeldet ist oder nicht – je nach Anwendung kann dies ein gewünschtes Verhalten sein oder auch nicht.

2) Wenn die Wiederverbindung mehr als eine Minute dauert, kommen Sie nie ans Ziel ...

Ich habe ein einfaches Skript geschrieben, das ich mit den Startskripten meiner Grafiksitzung ausführen kann und das ein guter Kandidat sein könnte. Ich leite seine Ausgabe in eine Datei um, damit ich sie mit meinem Dienstprogramm SLogger verfolgen kann.

Hier ist das Skript – man weiß nie.

#!/bin/bash
while /bin/true; do
    if ! [ "$(ping -c 1 google.com)" ]; then
        echo "Warning: connection lost at $(date) -- restart"  
        nmcli nm wifi off
        sleep 5
        nmcli nm wifi on
        sleep 60
        if ! [ "$(ping -c 1 google.com)" ]; then
             echo "Waiting for connection going up at $(date)"
             sleep 60
        else 
             echo "Connection on at $(date)" 
        fi
#    else
#        echo "Connection OK on $(date)"
    fi
sleep 60
done

verwandte Informationen