Jak usunąć setki automatycznie dodanych drukarek sieciowych?

16

Bardzo trudno jest mi wykonać drukowanie, ponieważ okno dialogowe drukarki jest pełne setek automatycznie dodanych drukarek, więc nie mogę znaleźć tego, którego chcę użyć, patrz zrzut ekranu poniżej.

Obraz dialogu drukarki pokazujący bardzo długi pasek przewijania

Drukarki pochodzą z mojej sieci służbowej, gdzie najwyraźniej wiele osób (w tym studentów, jak sądzę) „udostępnia” swoje domowe drukarki, które następnie mój laptop odbiera automatycznie. (przypadkowo czasami wyłączam demona avahi w pracy, po prostu dlatego, że używa on dużej ilości procesora).

Kiedy idę do http://localhost:631/printers/, mówi, że jest 131 drukarek i wszystkie są marką i modelują „Lokalną drukarkę Raw”. Z dwoma wyjątkami: 1 to drukarka sieciowa w pracy, którą ręcznie skonfigurowałem. Kolejna to drukarka sieciowa u moich rodziców, która również została automatycznie dodana i która jest teraz w tej samej sieci. Ale reszta to śmieci, których naprawdę chciałbym uniknąć. Będziemy wdzięczni za wskazówki, jak to zrobić.

Jednak nie wrócę do swojego miejsca pracy przez pewien czas, więc na razie chciałbym, aby te drukarki (czyli drukarki automatycznie dodane 129/130) zostały usunięte. Czy jest na to sposób? Wydaje mi się, że mógłbym to zrobić, klikając interfejs sieciowy cup, ale dla 129 drukarek to trochę więcej. Szukam jednego polecenia lub wskazówek, jak to osiągnąć za pomocą pewnego rodzaju skryptu.

jonaslb
źródło
1
patrz /etc/cups/printers.conf. zatrzymaj filiżanki, a następnie usuń drukarki z pliku.
Rinzwind
2
Nie jest to duplikat, ponieważ pytam, jak usunąć już zainstalowane drukarki, podczas gdy inne pytanie dotyczy zapobiegania ich instalacji. Jest to także pytanie, które zawiera wiele nieaktualnych odpowiedzi, które nie działają. Wiem to, ponieważ widziałem to już wcześniej i próbowałem trochę.
jonaslb
1
Zrozumiano,
schowano

Odpowiedzi:

12

Za pomocą tego polecenia: lpstat -awidzimy zainstalowanych drukarek i zidentyfikować nazwę żądanej drukarki, aby utrzymać, możemy użyć greppolecenia również filtrować wyniki tak: lpstat -a | grep <probable_name_of_printer>.

Wtedy ten mały skrypt może pomóc:

  1. Uruchom to polecenie, aby sprawdzić, czy żądanej drukarki nie ma na liście:

    lpstat -a | cut -d" " -f1 | sed -E '/<NAME_OF_PRINTER>/d' | grep <NAME_OF_PRINTER>
    
    • Nie powinno to zwracać niczego, ponieważ wykonuje następujące czynności:

      • lpstat -a: wyświetla listę zainstalowanych drukarek
      • cut -d" " -f1: zwracaj tylko nazwy drukarek
      • sed -E '/<NAME_OF_PRINTER>/d': usuń nazwę drukarki, która ma być przechowywana na wyjściu poprzednich poleceń
      • grep <NAME_OF_PRINTER>: upewnij się, że żądanej drukarki nie ma na liście
  2. Jeśli powyższe się sprawdzi; następnie uruchom to polecenie, aby usunąć każdą inną drukarkę, której nie potrzebujesz:

    sudo bash -c 'for i in $(lpstat -a | cut -d" " -f1 | sed -E '/<NAME_OF_PRINTER>/d'); do lpadmin -x "$i"; done'
    
George Udosen
źródło
To wygląda obiecująco. Myślę, że może być problem (z poleceniem listowania, więc prawdopodobnie także ostatnim poleceniem). lpstat -awyniki w <printer_name> not accepting request since <some date> -\n reason unknown(z reason unknownnową linią!). Tak więc za pomocą polecenia listingu otrzymuję wiele „drukarek” o nazwie „powód” (istnieje wcięcie).
jonaslb
Proszę podać, w której części masz problemy, i dodaj wyniki do pytania, aby móc śledzić! Co daje ci to polecenie lpstat -a?
George Udosen
1
Działało dobrze, ale dodałem kolejne sedpolecenie w „łańcuchu rur”: sed -E /reason/daby pozbyć się dodatkowych linii.
jonaslb
Świetna robota i cieszę się, że udało się!
George Udosen