[SOLVED] NetworkManager und Default-Drucker

Debian auf Notebooks und speziellen Geräten wie eingebetteten Systemen, Routern, Set-Top-Boxen, ...
Antworten
scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

[SOLVED] NetworkManager und Default-Drucker

Beitrag von scientific » 05.12.2016 11:36:17

Hi Leute!

Ich frage mich schon länger, ob ich nur zu doof zum Suchen bin, oder ob es dieses Feature tatsächlich nicht gibt...

Die Standard-Netzwerkverwaltung unter Gnome ist ja der Netzwerkmanager. Und eine Standardgeschichte ist ja in wechselnden Netzwerken, dass der/die verfügbaren Drucker vom Netzwerk abhängen. Dementsprechend muss man je nach Netzwerk in dem man gerade ist, den Default-Drucker festlegen.
Warum kann ich mit dem Netzwerkmanager nicht einen Default-Drucker pro Netzwerkverbindung festlegen?

Ich hatte hier gerade einen Lenovo-Laptop mit Win10 zur begutachtung, und da hab ich mir die Lenovo-Netzwerkverwaltungs-Software mal ein wenig angesehen. Die ermöglicht einen Default-Drucker pro Netzwerkverbindung voreinzustellen...

Ich mache mir gerade Gedanken, ob und wie das mit dem Netzwerkmanager sinnvoll zu realisieren ist.

Ich hab hier schon mit dispatcher-Skripten getestet, was grundsätzlich ja der Ansatz beim nm zu sein scheint. Das funktioniert auch ganz passabel. Aber es macht mich noch nicht glücklich.

Dann habe ich whereami am Start gehabt. Das hat mir die WLAN-Verbindungen komplett durcheinandergebracht, diese automatisch getrennt, es waren dann 3 neue Verbindungsversuche nötig, bis die Verbindung geklappt hat... Hab whereami wieder runtergeschmissen, jetzt klappt die Netzwerkverbindung wieder tatellos... Das Teil passt offenbar nicht mehr gut zur aktuellen Netzwerkverwaltung mit Networkmanager.

Ich hab mir auch schon systemd-networkd angesehen. In Verbindung mit wpa_suplicant@.service scheint das sogar in wechselnden Netzwerken ganz gut zu funktionieren. Jedoch bleiben Bluetooth- und USB-Thetering-Verbindungen mit dem Handy außen vor... die ich aber auch gelegentlich nutze, wenn ich unterwegs bin.

Außerdem fehlt mir eine einfache Schnittstelle zum User (ich will das ja nicht nur für mich verwenden... sondern auch sogenannten unbedarften Usern ermöglichen), wie z.B. die Einstellung des Default-Druckers per Netzwerk über das nm-applet.

Ich hab mal getestet, dass man den Konfigurations-Files von NetworkManager (NetworkManager.conf, system-connections/Verbindung) Konfigurations-Abschnitte unterschieben kann, ohne dass der Networkmanager jammert oder den Dienst verweigert.

Hab da mal für NetworkManager.conf folgendes eingefügt:

Code: Alles auswählen

[custom]
DefaultPrinter="PDF"
Das wäre cups-pdf, eine lokale PDF-Erzeugung mittels CUPS.

und in system-connections/Home

Code: Alles auswählen

[custom]
DefaultPrinter="Ricoh-SP204SNF"
Mein Drucker im Heimnetzwerk.

Das wird anstandslos ignoriert. :lol:

Jetzt frag ich mich aber, wie ich 1. diese Werte auslesen und 2. verarbeiten kann. 3. muss ich dann noch überlegen, ob und wie ich diese Konfiguration über das nm-applet oder nm-tui setzen kann.

Am liebsten wär mir natürliche eine Möglichkeit, die sowohl mit NetworkManager als auch mit systemd-networkd gleichermaßen funktioniert.

Ich weiß ja nicht, wieviele User hier überhaupt so weitgehende Programmierkenntnisse haben, und wenn sie haben, ob sie an so etwas überhaupt interessiert sind. Meine bisherigen Anfragen in Richtung Entwicklung sind ja sehr mager beantwortet worden...

lg scientific
Zuletzt geändert von scientific am 06.12.2016 15:04:08, insgesamt 1-mal geändert.
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: NetworkManager und Default-Drucker

Beitrag von scientific » 06.12.2016 14:49:41

Nun, da ich ja sonst nix zu tun habe :D :D :D hab ich mal etwas gebaut.

Ein Python-Skript, welches sowohl die Konfigurations-Dateien des Network-Managers liest, aber auch neu schreibt um die genannte Section [custom] mit dem DefaultPrinter einzufügen oder zu löschen. Anhand dieser wird dann beim Wechsel der Verbindung mit dem NetworkManager der entsprechende Default-Printer gesetzt.

Achtung, allfällige Kommentare in den Konfigurations-Files gehen momentan noch verloren!!!

Das ganze gibts hier:
https://github.com/xundeenergie/nm-defaultprinter
inklusive (noch ungetestetem) Debian-Paket für die einfachere Installation.

lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

Benutzeravatar
smutbert
Moderator
Beiträge: 8311
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: [SOLVED] NetworkManager und Default-Drucker

Beitrag von smutbert » 07.12.2016 21:05:50

Ich hab das Problem bis jetzt so gelöst, dass ich einfach cups-pdf als default-Drucker ausgewählt habe - den brauche ich ohnehin oft genug - und wenn ich wirklich auf Papier drucken will, dann wähle ich eben den passenden aus, aber deine Lösung gefällt mir auch sehr gut :wink:

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: [SOLVED] NetworkManager und Default-Drucker

Beitrag von scientific » 07.12.2016 22:29:10

Wenn ich mit meinem Laptop nur zuhause bin (oder nur in einem Büro), dann ist das ja auch völlig ausreichend.

Aber wenn ich oft die Netzwerke wechsle und die dazugehörigen Drucker, dann ist es halt immer zach nachzudenken, welches ist denn jetzt grad der Drucker, der passt...
Und so kann ichs einmal festlegen und dann passt es. :)

Wo ich allerdings gänzlich scheitere... Hab mir mal den Source-Code von Network-Manager angesehen... Das dort einzubauen (ins Applet....)... nö, da steig ich aus. Ich kann kein C/C++ und GTK ist auch noch ein sehr sehr fremdes Land für mich...

Aber ich denk mal, es dürfte mich etwas Kenntnis der Materie noch allzu schwierig sein, die Auswahl in das Applet/Connection-Manager einzubauen. Das wechseln des Druckers kann ruhig per dispatcher-Skript erfolgen.
Ist halt auch die Frage, ob in Networkmanager eine Abhängigkeit von CUPS reinsoll... Schön wärs halt, wenn die Konfiguration einfach und an einer Stelle möglich wäre.

lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

Benutzeravatar
sbruder
Beiträge: 333
Registriert: 24.06.2016 13:54:36
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Franken

Re: [SOLVED] NetworkManager und Default-Drucker

Beitrag von sbruder » 07.12.2016 22:35:31

Ich würde eher vorschlagen ein plugin ala Debiannetwork-manager-openvpn-gnome zu schreiben, das kann dann eine Abhängigkeit auf cups haben aber sich trotzdem ins Menü integrieren.

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: [SOLVED] NetworkManager und Default-Drucker

Beitrag von scientific » 07.12.2016 22:43:04

sbruder hat geschrieben:Ich würde eher vorschlagen ein plugin ala Debiannetwork-manager-openvpn-gnome zu schreiben, das kann dann eine Abhängigkeit auf cups haben aber sich trotzdem ins Menü integrieren.
Das Problem dabei ist, ich kann kein C/C++... Und mit Python fühle ich mich auch noch zu wenig fit um überhaupt abschätzen zu können, ob ich so ein Plugin auch in Python schreiben zu können :)

lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

Benutzeravatar
smutbert
Moderator
Beiträge: 8311
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: [SOLVED] NetworkManager und Default-Drucker

Beitrag von smutbert » 07.12.2016 23:37:26

ich hätt eine kleine Kritik am Debianpaket, wenn es erlaubt ist:

Erstens ist es verwirrend, dass sich Paket- und Dateiname unterscheiden (nm-defaultprinter vs network-manager-defaultprinter) und zweitens gibts im Paket ein Verzeichnis »/.git« und eine Datei »/REAMDE.md« - Dinge, die man im Wurzelverzeichnis nicht unbedingt erwarten würde.

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: [SOLVED] NetworkManager und Default-Drucker

Beitrag von scientific » 08.12.2016 00:14:22

Danke für den Hinweis. Sind meine ersten Versuche git und Paketebau zu vereinen.

Ich werds ausbessern.

Lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: [SOLVED] NetworkManager und Default-Drucker

Beitrag von scientific » 08.12.2016 12:55:16

So. Hab die Verzeichnisstruktur angepasst und das Paket neu gebaut.
Jetzt ohne .git und README.md in / :)

lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: NetworkManager und Default-Drucker

Beitrag von scientific » 18.12.2016 23:21:22

Ein Problem ist jetzt bei Testen aufgetaucht...

Ich hab hier eine Kabelverbindung, die ich gelegentlich verwende. Im Connection-Manager taucht diese als "Kabelverbindung 1" auf und war auch nutzbar.
Jedoch finde ich unter "/etc/NetworkManager/system-connections" kein File, worin die Verbindungsdaten abgelegt wären. Nichts!!!

Und auf einem anderen Rechner wird eine WLAN-Verbindung benutzt, zu der es ein File in diesem Verzeichnis gibt, wo die uuid und die id benutzt werden. Jedoch wird die Variable mit dem Filenamen zum Konfigfile dieser Verbindung von Dispatcher nicht übergeben. Die ID bzw. UUID jedoch schon.

Ich hab im Dispatcher-Skript zum Debuggen folgende Zeile eingebaut:

Code: Alles auswählen

echo $CONNECTION_ID $CONNECTION_UUID $CONNECTION_FILENAME
Damit sehe ich, welche Informationen übergeben werden.

Hat dazu jemand eine Idee?

lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

Benutzeravatar
smutbert
Moderator
Beiträge: 8311
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: [SOLVED] NetworkManager und Default-Drucker

Beitrag von smutbert » 19.12.2016 00:34:17

Hm, wo werden denn nicht systemweite Verbindungen gespeichert - das waren ja mitunter keine eigenen Dateien, sondern zB gconf-Einträge?

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: [SOLVED] NetworkManager und Default-Drucker

Beitrag von scientific » 19.12.2016 18:02:32

Ah ok.
Ich werd da mal weiterforschen.
Damit wirds dann aber komplizierter, Defaultdrucker pro Verbindung anzulegen... :-/
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

Benutzeravatar
smutbert
Moderator
Beiträge: 8311
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: [SOLVED] NetworkManager und Default-Drucker

Beitrag von smutbert » 19.12.2016 20:43:05

Die Identifizierung des Netzwerks über eine ID klingt ohnehin schöner finde ich. Interpretiere ich deinen Code im Dispatcherskript richtig, dass du mit

Code: Alles auswählen

case "$2" in
[…]
	down)
		$PRINTERSCRIPT -C
                ;;
[…]
beim verlassen eines Netzwerkes, den Defaultdrucker für dieses Netzwerk automatisch neu festlegst - das ist (bzw. wäre) genial.
(wirklich testen kann ich es momentan nur schlecht, weil ich nur einen Drucker und nur ein Netzwerk habe und mich beim Umgang mit Fake-Netzwerken gerade recht ungeschickt anstelle)

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: [SOLVED] NetworkManager und Default-Drucker

Beitrag von scientific » 19.12.2016 21:09:00

smutbert hat geschrieben:Die Identifizierung des Netzwerks über eine ID klingt ohnehin schöner finde ich. Interpretiere ich deinen Code im Dispatcherskript richtig, dass du mit

Code: Alles auswählen

case "$2" in
[…]
	down)
		$PRINTERSCRIPT -C
                ;;
[…]
beim verlassen eines Netzwerkes, den Defaultdrucker für dieses Netzwerk automatisch neu festlegst - das ist (bzw. wäre) genial.
(wirklich testen kann ich es momentan nur schlecht, weil ich nur einen Drucker und nur ein Netzwerk habe und mich beim Umgang mit Fake-Netzwerken gerade recht ungeschickt anstelle)
Das "Problem" ist, dass ich den Default-Printer-Eintrag nur in einem Connections-File in /etc/NetworkManager/system-connections/ schreiben/lesen kann. Das heißt, ich hab die Abfrage über id, uuid und Filenamen ermöglicht... es kommt auf selbe raus (funktioniert aber offenbar nicht immer mit dem Filenamen).

Der Codeschnipsel den du zitierst macht folgendes:
Das Printerscript nur mit -C aufgerufen liest den Default-Drucker aus, der in "/etc/NetworkManager/NetworkManager.config" festgelegt wird (in meinem Falle ist es PDF - der cups-pdf-Drucker). Das bedeutet, wenn die Netzwerkverbindung aus irgend einem Grund flöten geht, wird zumindest ein PDF erzeugt. :-)

Insoferne... kannst du es durchaus testen. Netzverbindung da, der physische Drucker ist der Default-Drucker.
Netzwerk weg, PDF ist Default.

lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

Benutzeravatar
smutbert
Moderator
Beiträge: 8311
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: [SOLVED] NetworkManager und Default-Drucker

Beitrag von smutbert » 19.12.2016 21:58:52

Ok, das hab ich falsch verstanden. Was ich gemeint hab, ist, dass nm-defaultprinter nachdem ein Netzwerk verlassen worden ist, den momentan eingestellten Defaultdrucker der Cups-Konfiguration lesen und als (neuen) Default für dieses eben verlassene Netzwerk speichern könnte, bevor es den den Defaultdrucker einer neuen Netzwerkverbindung oder den Fallbackdrucker aktiviert. Auf die Art müsste das Ding dann die Drucker der einzelnen Netzwerke im Laufe der Zeit automatisch lernen.
Wenn dann außerdem noch die Zuordnung Netzwerk-ID → Drucker in einer eigenen Konfigurationsdatei gespeichert würde, würde es nm-defaultprinter nichts ausmachen, wenn man in der grafischen Oberfläche die Konfiguration einer Netzrwerkverbindung ändert - ich weiß nicht ob das für deine "DefaultPrinter=..." Einträge auch gilt.

(Das Herangehen mag zwar Schwächen haben, aber für manche Situationen habe ich sowieso keine Vorstellung, welches Verhalten richtig wäre, zB wenn man sich über verschiedene WLAN-Netze mit einem VPN verbindet. Dann könnte ja sowohl das momentan WLAN wie auch das VPN einen eigenen Drucker haben...)

Aber bitte versteh das nur als nicht als Feature Request - ich fürchte ich drucke so selten und auch fast ausschließlich über cups-pdf und einen einzigen physischen Drucker, dass ich nm-defaultprinter, egal wie gut es mir gefällt, keinesfalls brauche.

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: [SOLVED] NetworkManager und Default-Drucker

Beitrag von scientific » 19.12.2016 22:41:26

Ah, ich verstehe!

Ja, so ähnlich hab ich auch schon darüber nachgedacht, bin aber aufgrund der Tatsache, dass ich nicht alle Verbindungen im Verzeichnis gefunden habe vorerst hier noch nicht weiter gegangen.

Unter Windows 10 gibt es die Möglichkeit, dass "Windows die Drucker verwaltet". Das bedeutet, dass der zuletzt verwendete Drucker zum Default-Drucker wird. Ein durchaus spannendes Verhalten. Wenn ich in der Tabellenkalkulation eine Tabelle am Farbdrucker ausdrucke, wird der beim nächsten Druck mit dem PDF-Reader auch verwendet.

Das würde irgendwie in diese Richtung gehen.

Ich habe jedoch diese Option in Win10 bis jetzt deaktiviert, da es mich mehr verwirrt. Ich bin in der Arbeit auf mehreren Rechnern in mehreren Netzen m Einsatz und dann weiß ich nie, welcher Drucker jetzt der gerade aktive ist (was bei den Schnell-Druck-Funktionen in Windows ungut ist).

Was ich in Linux noch nicht ganz durchschaut habe (und doof finde... Linus Torvalds im übrigen auch) ist die Tatsache, dass man in Linux zum Ändern des Default-Printers Admin-Rechte benötigt - oder sich zumindest authentifizieren muss (wenn man in der Gruppe lpadmin ist). Und gibt es mit cups die Möglichkeit, dass jeder User einen anderen Default-Printer hat - der auch vom System-Default-Printer verschieden ist?

Das sind alles Geschichten, welche mir momentan noch Entwicklungsstillstand verursachen. :) Bis ich mir klar geworden bin, was klug ist, und wie ich es machen will.

Die einfachste Form des "Gedächtnisses" für den Defaultprinter ist meines Erachtens genau bei den anderen Verbindungs-Einstellungen. Blöd nur, dass diese nicht alle an einer Stelle vermerkt sind. Und mit dconf bin ich noch nicht so wirklich vertraut...

Aber ich werde die Anregung gerne aufnehmen, dass beim deaktivieren einer Netzverbindung der aktuelle Default-Drucker für diese Verbindung auch als dieser eingetragen wird.

lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

Antworten