ubuntuusers.de

Netzwerk an/aus autom. durch Browser an/aus

Status: Gelöst | Ubuntu-Version: Lubuntu 18.04 (Bionic Beaver)
Antworten |

woldec

Anmeldungsdatum:
23. Mai 2017

Beiträge: Zähle...

salve, ist es möglich, eine offlines Netzwerk durch Aufrufen des Browsers automatisch online zu schalten-und beim Beenden des Browsers die Netzwerkverbindung automatisch zu beenden? Also Netzwerk an/aus mit an/aus des Browsers zu steuern.

Moderiert von kB:

Aus dem Forum „Netzwerk und Internetzugang einrichten“ in einen besser passenden Forenbereich verschoben. Bitte beachte die als wichtig markierten Themen („Welche Themen gehören hier her und welche nicht?“) im jeweiligen Forum! Danke.

Thomas_Do Team-Icon

Moderator
Avatar von Thomas_Do

Anmeldungsdatum:
24. November 2009

Beiträge: 8808

Klar, Du könntest z.B. ein kleines Skript schreiben, das die Netzwerkverbindung herstellt und dann den Browser startet. Das kannst Du dann mit einer .desktop-Datei aufrufen.

Mir stellt sich aber die Frage, wie sinnhaft so etwas ist. Stehen Sicherheitsüberlegungen hinder dieser Idee?

woldec

(Themenstarter)

Anmeldungsdatum:
23. Mai 2017

Beiträge: 51

"Stehen Sicherheitsüberlegungen hinder dieser Idee?" Ja. Wenn ich als Bürger u. Verein meine Schriftsätze privat u. mit Behörden gestalte mag ich das web überhaupt nicht. Ist etwas paranoid-aber auch eine Prinzipienfrage. Immerhin hat das BSI recht, das die Verringerung der Angriffsflächen die Basis einer ordentliche PC-Führung ist.

Und Faulheit-ich kann ja in der Leiste auf "Verbindung trennen/kabelverbundene Verbindung-ja" klicken-aber eleganter ist meine o.g. Idee. Nur kann ich leider kein Skript unter Linux schreiben-das konnte ich nur als batchdatei unter Microsoft. Aber von dem Geschäftspartner habe ich mich schon lange getrennt-der kann ja nicht mal ein OS nach dem Containerprinzip bauen um die o.g. BSI-Anregung umzusetzen. (Nicht nach Duden)

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13213

So ein Skript ist relativ einfach:

1
2
3
4
5
6
7
8
#!/bin/sh

set -e

nmcli networking on
trap 'nmcli networking off' 0

chromium-browser "$@"

Quelle

Du kannst es auch generisch machen, d.h. ein Skript schreiben, das Networking vor dem Start beliebiger Programme ein- und danach wieder ausschaltet:

1
2
3
4
5
6
7
8
#!/bin/sh

set -e

nmcli networking on
trap 'nmcli networking off' 0

"$@"

Dem kannst Du jetzt beim Start den Befehl mitgeben, z.B.

1
$ with-network chromium-browser https://www.google.de/

Beide Skripte kannst Du über eine .desktop-Datei aufrufen.

woldec

(Themenstarter)

Anmeldungsdatum:
23. Mai 2017

Beiträge: 51

Danke. Ich probiers.

dingsbums

Anmeldungsdatum:
13. November 2010

Beiträge: 3790

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.

 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

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

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13213

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.

dingsbums

Anmeldungsdatum:
13. November 2010

Beiträge: 3790

rklm schrieb:

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.

Du meinst dein

nmcli networking off

? Das produziert hier auf einem zugegebenermaßen nicht ganz taufrischem Netbook jede Menge CPU-Last. Meine Variante nicht.

Noch ein paar Anmerkungen

Einen 18-Zeiler zu optimieren, halte ich für das berühmte 'mit Kanonen auf Spatzen schießen'. Aber es hätte mich auch gewundert, wenn du mal nichts herumzukritteln gehabt hättest.

Laß doch einfach den TE entscheiden, was er verwenden möchte.

Antworten |