dingsbums schrieb:
Das folgende Skript prüft alle 15s, ob ein Prozess namens firefox läuft. Falls nicht, wird die Networkmanager-Verbindung dein.wlan beendet. Läuft der Prozess und dein.wlan ist nicht im Status "verbunden", wird die Verbindung aktiviert.
Ich finde, da ist die Variante mit dem Skript, das am Anfang das Netzwerk einschaltet und nach Beendigung des Prozesses wieder ausschaltet, deutlich einfacher und ressourcenschonender.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 | #!/bin/bash
browserprozess="firefox"
verbindungsname="dein.wlan"
aktivtext="verbunden"
while true; do
ps -A | grep "$browserprozess"
if [ $? -eq 1 ];then
nmcli connection down "$verbindungsname"
else
nmcli device | grep "$verbindungsname" | grep "$aktivtext"
if [ $? -ne 0 ];then
nmcli connection up "$verbindungsname"
fi
fi
sleep 15
done
|
Noch ein paar Anmerkungen
Für solche wiederkehrende Aufgaben bieten sich Systemd-Timer an - in diesem Fall im Userspace.
Dein Skript produziert unnötige Ausgaben, weil Du nicht grep -q
nutzt.
Die Abfrage aus Zeile 8 kannst Du wunderbar hinter das if
in Zeile 9 packen.
Genau so für Zeile 12
Die Abfrage gegen 1 in Zeile 9 würde man besser als -ne 0 formulieren, weil 1 nur einer der "false"-Werte ist. Aber: s.o.
Du könntest hier elif
nutzen.
Aber die Prüfung von Zeile 12 und 13 brauchst Du eigentlich nicht, weil ein nmcli connection up
problemlos auch bei bestehender Verbindung aufgerufen werden kann.
Anzupassen sind der Name der Networkmanager-Verbindung und evtl. der Suchtext für die aktive Verbindung. Hier: verbunden, abzufragen mit
nmcli device | grep dein.wlan
Braucht man nicht unbedingt: wenn es nur um WiFi geht, dann kann man das auch über nmcli radio wifi on
bzw. off
regeln.