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