Як видалити сотні автоматично доданих мережевих принтерів?


16

Мені дуже важко виконати друк, тому що діалог принтера переповнений сотнями автоматично доданих принтерів, тому я не можу знайти той, який я хочу використовувати, див. Скріншот нижче.

Зображення діалогу принтера з дуже довгою смугою прокрутки

Принтери походять з моєї робочої мережі, де, мабуть, багато людей (включаючи студентів, я думаю) "діляться" своїми домашніми принтерами, які мій ноутбук потім забирає автоматично. (випадково я іноді відключаю avahi-демон на роботі, просто тому, що він використовує велику кількість процесора).

Коли я переходжу до сторінки http://localhost:631/printers/, вона каже, що є 131 принтер, і всі вони є "Make-Model" та "Місцевий сирий принтер". За двома винятками: 1 - це мережевий принтер у роботі, який я налаштував вручну. Інший - це мережевий принтер у батьків моїх, який також автоматично додався і який я перебуваю в тій же мережі, що і зараз. Але решта - це лише сміття, якого я дуже хотів би уникнути. Поради, як це зробити, були б вдячні.

Я трохи не повернуся на своє робоче місце, тому зараз я хотів би просто видалити ці принтери (це автоматично додані принтери 129/130). Чи є спосіб це зробити? Я думаю, що я міг би це зробити, натиснувши веб-інтерфейс чашок, але для 129 принтерів - це небагато. Тому я шукаю єдину команду чи поради щодо того, як цього досягти за допомогою свого роду сценарію.


1
див. /etc/cups/printers.conf. зупиніть чашки, а потім вийміть принтери з файлу.
Rinzwind

2
Це не дублікат, тому що я запитую, як видалити вже встановлені принтери, тоді як інше питання стосується запобігання їх встановлення. Крім того, це питання, в якому гарячий безлад застарілих відповідей, які не спрацьовують. Я це знаю, тому що я бачив це раніше і спробував щось із цього.
jonaslb

1
Зрозумів, відступив :)
НГР

Відповіді:


12

З допомогою цієї команди: lpstat -aми можемо побачити встановлені принтери та визначити ім'я потрібного принтера , щоб зберегти, ми можемо використовувати grepкоманду також для фільтрації результатів , так як: lpstat -a | grep <probable_name_of_printer>.

Тоді цей маленький сценарій може допомогти:

  1. Запустіть цю команду, щоб перевірити, чи потрібний принтер не вказаний:

    lpstat -a | cut -d" " -f1 | sed -E '/<NAME_OF_PRINTER>/d' | grep <NAME_OF_PRINTER>
    
    • Це нічого не повинно повернути, оскільки це робить наступне:

      • lpstat -a: список встановлених принтерів
      • cut -d" " -f1: повертайте лише імена принтерів
      • sed -E '/<NAME_OF_PRINTER>/d': видаліть ім’я принтера, яке не слід виводити з попередніх команд
      • grep <NAME_OF_PRINTER>: переконайтеся, що потрібний принтер відсутній у списку
  2. Якщо зазначене вище перевіряється; потім запустіть цю команду, щоб видалити всі інші принтери, які вам не потрібні:

    sudo bash -c 'for i in $(lpstat -a | cut -d" " -f1 | sed -E '/<NAME_OF_PRINTER>/d'); do lpadmin -x "$i"; done'
    

Це виглядає перспективно. Я думаю, що може виникнути проблема (з командою лістингу, імовірно, і останньою командою). lpstat -aрезультати в <printer_name> not accepting request since <some date> -\n reason unknownreason unknownновим рядком!). Таким чином, використовуючи вашу команду лістингу, я отримую багато "принтерів" з назвою "причина" (є відступ).
jonaslb

Будь ласка, будь ласка, до якої частини кроків у вас виникли проблеми, і додайте будь-які результати до свого питання, щоб я міг дотримуватися! Що lpstat -aдає вам команда ?
Джордж Удосен

1
Це спрацювало чудово, але я додав ще одну sedкоманду у «ланцюзі труб»: sed -E /reason/dпозбутися зайвих рядків.
jonaslb

Чудова робота і рада, що вона працювала!
Джордж Удосен
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.