ubuntuusers.de

Sperren, nur wenn nicht am "heimischen" Netzwerk

Status: Gelöst | Ubuntu-Version: Ubuntu 12.10 (Quantal Quetzal)
Antworten |

ex-oSuse

Avatar von ex-oSuse

Anmeldungsdatum:
28. November 2009

Beiträge: 350

Hallo,

ich sperre meinen Desktop sehr schnell, da ich viel unterwegs und das Notebook "unbeobachtet" bleibt. Aber zu Hause nervt das, nach jedem Kaffee sich Anzumelden. Daher die Frage: kann ich das sperren "lokalisieren"? Entweder per IP oder GPS?

Danke für jeden brauchbaren Tipp.

Gruß Gerhard

Moderiert von Hexe25:

Ins passendere Forum verschoben und als gelöst markiert. Frohe Weihnachten! ☺

jplatte Team-Icon

Anmeldungsdatum:
28. November 2010

Beiträge: 1660

Ich denke das sollte relativ einfach mit einem script gehen, das nach dem Heimnetz-Namen oder Wlan-Netz unterscheidet (falls du immer per wlan verbunden bist, ist letzteres wahrscheinlich einfacher).

Aber grundsätzlich verstehe ich nicht genau, was du meinst mit

ich sperre meinen Desktop sehr schnell

Möchtest du ändern, was passiert, wenn der PC eine Zeit lang nicht bedient wird? Oder willst du das Bildschirm sperren per Tastenkombination in bestimmten Fällen deaktivieren, weil du es aus Gewohnheit zu oft benutzt?

ex-oSuse

(Themenstarter)
Avatar von ex-oSuse

Anmeldungsdatum:
28. November 2009

Beiträge: 350

Jonessen96 schrieb:

Ich denke das sollte relativ einfach mit einem script gehen, das nach dem Heimnetz-Namen oder Wlan-Netz unterscheidet (falls du immer per wlan verbunden bist, ist letzteres wahrscheinlich einfacher).

schon, nur fehlt mir die Idee, wie ich z.B. die IP abfrage.

Aber grundsätzlich verstehe ich nicht genau, was du meinst mit

ich sperre meinen Desktop sehr schnell

die Sperre ist aktuell schon nach 1 Minute Inaktivität wirksam.

Möchtest du ändern, was passiert, wenn der PC eine Zeit lang nicht bedient wird? Oder willst du das Bildschirm sperren per Tastenkombination in bestimmten Fällen deaktivieren, weil du es aus Gewohnheit zu oft benutzt?

Ich möchte die Sperre am heimischen Netz komplett deaktiviert haben. Und an einem anderen Netz bzw. ohne Netz soll sie wirksam sein - als nach 1 Minute ist die Eingabe vom Passwort erforderlich. Und das ganze ohne mein Zutun.

Eigentlich wäre als Auslöser die Zuweisung von einer neuen IP ideal. Nur wie/wo das Skript "einhängen"? Denn pollen ist sicher nicht das gelbe vom Ei.

Gruß Gerhard

diesch Team-Icon

Avatar von diesch

Anmeldungsdatum:
18. Februar 2009

Beiträge: 5072

Wohnort: Brandenburg an der Havel

Müsste in /etc/NetworkManager/dispatcher.d/ gehen, siehe die Manpage zu NetworkManager

jplatte Team-Icon

Anmeldungsdatum:
28. November 2010

Beiträge: 1660

Naja wenn die Situation jetzt klar ist macht Google den Rest. Da ich aber keine Ahnung habe, wie man eine Aktion ausführen lässt, nachdem eine Minute niemand was gemacht hat, würde ich es einfach so lösen, dass automatisch beim Wlan-Netzwechsel überprüft wird, welches Netz drin ist und dann entsprechend das Bildschirm sperren aus den Systemeinstellungen zu aktivieren / deaktivieren. Ich werd mal versuchen das alles zusammen zu suchen 😉

Was soll denn passieren, wenn gar das Wlan aus ist oder nicht verbunden?

jplatte Team-Icon

Anmeldungsdatum:
28. November 2010

Beiträge: 1660

Okay ich denke die Idee von diesch sollte funktionieren.

Du müsstest also ein script in /etc/NetworkManager/dispatcher.d/ anlegen, ich würde es z.B. toogle_lock.sh nennen. Da überprüfst du dann nach dem UUID der Verbindung und änderst dann entsprechend den Status der Option ob der Bildschirm gesperrt werden soll, wenn er abgeschaltet wird. Sollte dann ungefähr so aussehen (werde es gleich auch mal testen, da ist sicherlich wegen meiner schlechten shell-Kenntnisse noch der ein oder andere Fehler):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#!/bin/bash
# Zweites Argument kann ignoriert werden, um alle Veränderungen zu berücksichtigen, falls ich das richtig verstehe...
# Nur Änderungen an der Wlan-Verbindung berücksichtigen
if [ "$1" = "wlan0" ]; then
	if [ "$CONNECTION_UUID" = "heimnetz" ]; then
		gsettings set org.gnome.desktop.screensaver lock-enabled false
	else
		gsettings set org.gnome.desktop.screensaver lock-enabled true
	fi
fi

jplatte Team-Icon

Anmeldungsdatum:
28. November 2010

Beiträge: 1660

Hab das ganze Mal mit Anpassungen der Befehle die in den entsprechenden Fällen ausgeführt werden, und der UUID, ausprobiert. Leider funktioniert es noch nicht. Das script wird trotz der richtigen Rechte für die Datei nicht automatisch gestartet.

Wenn ich es manuell ausführe, fehlt die Umgebungsvariable CONNECTION_UUID, wenn ich aber diese dazu definiere geht es. Ich werde mal versuchen rauszufinden, wieso das script nicht automatisch startet.

Btw.: Frohe Weihnachten 😀

ex-oSuse

(Themenstarter)
Avatar von ex-oSuse

Anmeldungsdatum:
28. November 2009

Beiträge: 350

Danke für das Weihnachtsgeschenk! 👍

Schöne Feiertage!

jplatte Team-Icon

Anmeldungsdatum:
28. November 2010

Beiträge: 1660

So, da gab es doch Probleme mit den Rechten.

sudo chmod 744 /etc/NetworkManager/dispatcher.d/toogle_lock.sh 

hat geholfen. Jetzt hat der aber immer noch ein Problem mit dem gsettings-Befehl, außerdem ändert sich CONNECTION_UUID nicht, wenn das Wlan aus geht.

Der Fehler mit dem Setzen gsettings-Befehl ist folgender

** (process:3967): WARNING **: failed to commit changes to dconf: Error spawning command line `dbus-launch --autolaunch=86e0088289ff21f13aaaf69800000002 --binary-syntax --close-stderr': Child process exited with code 1

und drangekommen bin ich, indem ich

sudo /usr/lib/NetworkManager/nm-dispatcher.action --debug 

ausgeführt und dann das Wlan deaktiviert habe.

Ich habe jetzt keine Zeit mehr, aber kann in den nächsten Tagen nochmal gucken. Ich denke, man sollte dann nochmal das zweite Argument, das übergeben wird, berücksichtigen, um das Sperren beim Wlan ausschalten immer zu aktivieren. Und natürlich den Fehler mit dem gsettings-Befehl beheben.

Ich melde mich dann nochmal 😉

jplatte Team-Icon

Anmeldungsdatum:
28. November 2010

Beiträge: 1660

Soo, da gab es noch einiges zu ändern, aber jetzt funktioniert es ☺

Also jetzt eine Anleitung um das komplett benutzen zu können:

  • Das Script erstellen. Der Schönheit halber verzeichte ich auf die Dateiendung 😀

    sudo touch /etc/NetworkManager/dispatcher.d/toogle_lock 
  • Das Script mit den richtigen Berechtigungen versehen

    sudo chmod 744 /etc/NetworkManager/dispatcher.d/toogle_lock 
  • Das Script mit Inhalt füllen

    gksu gedit /etc/NetworkManager/dispatcher.d/toogle_lock 

    An den markierten Stellen musst du deine eigenen Daten einsetzen.

    #!/bin/bash
    ON_USER="dein_nutzername"
    WLAN_ESSID="dein_heimnetz"
    DBUS_SESSION=$(grep -v "^#" /home/$ON_USER/.dbus/session-bus/`cat /var/lib/dbus/machine-id`-0)
    # Nur Änderungen an der Wlan-Verbindung berücksichtigen
    if [ "$1" = "wlan0" ]; then
    	# Wlan aus => Automatisches Sperren eingeschaltet
    	if [ "$2" = "down" ]; then
    		sudo -u $ON_USER $DBUS_SESSION gsettings set org.gnome.desktop.screensaver lock-enabled true
    	else
    		if [ "$CONNECTION_ID" = "$WLAN_ESSID" ]; then
    			sudo -u $ON_USER $DBUS_SESSION gsettings set org.gnome.desktop.screensaver lock-enabled false
    		else
    			sudo -u $ON_USER $DBUS_SESSION gsettings set org.gnome.desktop.screensaver lock-enabled true
    		fi
    	fi
    fi
    exit 0

Das wars! Bei mir funktioniert es auch. Ich denke aber nicht, dass ich es verwenden werde 😀

Hier nochmal die Quelle mit der ich das wichtigste Problem lösen konnte: http://ubuntuforums.org/showpost.php?s=882b1c25011bf71d0cfcf325bb4028ea&p=6938275&postcount=4

ex-oSuse

(Themenstarter)
Avatar von ex-oSuse

Anmeldungsdatum:
28. November 2009

Beiträge: 350

Vielen Dank. Ein echt brauchbares Weihnachtsgeschenk. Werde es am Wochenende einbauen.

Gruß Gerhard

Antworten |