Wie entferne ich Hunderte von automatisch hinzugefügten Netzwerkdruckern?

16

Das Drucken ist für mich sehr schwierig, da der Druckerdialog mit Hunderten automatisch hinzugefügten Druckern gefüllt ist, sodass ich den gewünschten Drucker nicht finden kann (siehe Abbildung unten).

Bild des Druckerdialogs mit einer sehr langen Bildlaufleiste

Die Drucker stammen aus meinem Arbeitsnetzwerk, in dem anscheinend viele Leute (einschließlich Studenten, denke ich) ihre Heimdrucker "teilen", die mein Laptop dann automatisch abholt. (zufällig deaktiviere ich manchmal den Avahi-Daemon bei der Arbeit, einfach weil er viel CPU verbraucht).

Wenn ich zu gehe http://localhost:631/printers/, heißt es, dass es 131 Drucker gibt, die alle vom Hersteller und Modell 'Local Raw Printer' sind. Mit zwei Ausnahmen: 1 ist ein Netzwerkdrucker im Einsatz, den ich manuell konfiguriert habe. Ein weiterer ist ein Netzwerkdrucker bei meinen Eltern, der ebenfalls automatisch hinzugefügt wurde und in dem ich mich gerade im selben Netzwerk befinde. Aber der Rest ist nur Müll, den ich wirklich gerne vermeiden würde. Tipps dazu sind willkommen.

Ich werde jedoch für einige Zeit nicht an meinen Arbeitsplatz zurückkehren, daher möchte ich, dass diese Drucker (das wären die automatisch hinzugefügten 129/130-Drucker) vorerst entfernt werden. Gibt es eine Möglichkeit, das zu tun? Ich schätze, ich könnte es tun, indem ich mich in der cups-Weboberfläche durchklickte, aber für 129 Drucker ist das ein bisschen viel. Ich suche also nach einem einzigen Befehl oder nach Tipps, wie man ihn mit einer Art Skript erreicht.

jonaslb
quelle
1
Siehe /etc/cups/printers.conf. Stoppen Sie die Tassen und entfernen Sie die Drucker aus der Datei.
Rinzwind,
2
Es ist kein Duplikat, da ich frage, wie bereits installierte Drucker entfernt werden sollen, während es bei dieser anderen Frage darum geht, ihre Installation zu verhindern. Es ist auch eine Frage, die eine Menge veralteter Antworten enthält, die nicht funktionieren. Ich weiß das, weil ich es schon einmal gesehen und probiert habe.
jonaslb
1
Verstanden, eingefahren :)
NGRhodes

Antworten:

13

Mit diesem Befehl lpstat -akönnen wir die installierten Drucker sehen und den Namen des gewünschten Druckers identifizieren, den wir behalten möchten. Mit dem grepBefehl können wir auch die Ergebnisse wie folgt filtern:lpstat -a | grep <probable_name_of_printer> .

Dann kann dieses kleine Skript helfen:

  1. Führen Sie diesen Befehl aus, um zu überprüfen, ob der gewünschte Drucker nicht aufgeführt ist:

    lpstat -a | cut -d" " -f1 | sed -E '/<NAME_OF_PRINTER>/d' | grep <NAME_OF_PRINTER>
    
    • Dies sollte nichts zurückgeben, da es Folgendes tut:

      • lpstat -a: Liste der installierten Drucker
      • cut -d" " -f1: Nur die Namen der Drucker zurückgeben
      • sed -E '/<NAME_OF_PRINTER>/d': Entfernen Sie den Namen des Druckers, um ihn aus der Ausgabe der vorherigen Befehle zu entfernen
      • grep <NAME_OF_PRINTER>: Stellen Sie sicher, dass der gewünschte Drucker nicht in der Liste enthalten ist
  2. Wenn das oben genannte auscheckt; Führen Sie dann diesen Befehl aus, um alle anderen Drucker zu entfernen, die Sie nicht benötigen:

    sudo bash -c 'for i in $(lpstat -a | cut -d" " -f1 | sed -E '/<NAME_OF_PRINTER>/d'); do lpadmin -x "$i"; done'
    
George Udosen
quelle
Das sieht vielversprechend aus. Ich denke, es könnte jedoch ein Problem geben (mit dem Listing-Befehl also vermutlich auch mit dem letzten Befehl). lpstat -aergibt <printer_name> not accepting request since <some date> -\n reason unknown(mit reason unknownin einer neuen Zeile!). Mit Ihrem Listing-Befehl erhalte ich also eine Menge "Drucker" mit dem Namen "reason" (es gibt einen Einzug).
jonaslb
Bitte geben Sie an, bei welchem ​​Teil der Schritte Sie Probleme haben, und fügen Sie Ihrer Frage Ergebnisse hinzu, damit ich folgen kann! Was gibt lpstat -aIhnen der Befehl ?
George Udosen
1
Es hat gut funktioniert, aber ich habe einen weiteren sedBefehl in die "Pipe Chain" eingefügt : sed -E /reason/dum die zusätzlichen Zeilen loszuwerden.
jonaslb
Tolle Arbeit und froh, dass es funktioniert hat!
George Udosen