Как удалить сотни автоматически добавленных сетевых принтеров?

Как удалить сотни автоматически добавленных сетевых принтеров?

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

Изображение диалогового окна принтера с очень длинной полосой прокрутки

Принтеры подключены к моей рабочей сети, где, по-видимому, множество людей (включая студентов, я полагаю) «делятся» своими домашними принтерами, которые мой ноутбук затем автоматически подхватывает. (По совпадению, я иногда отключаю avahi-daemon на работе, просто потому, что он использует большую часть ресурсов ЦП).

Когда я захожу в http://localhost:631/printers/, он говорит, что есть 131 принтер, и все они марки и модели «Local Raw Printer». За двумя исключениями: 1 — это сетевой принтер на работе, который я настроил вручную. Другой — это сетевой принтер у моих родителей, который также был автоматически добавлен и который я сейчас нахожусь в той же сети. Но все остальное — просто мусор, которого я бы очень хотел избежать. Буду признателен за советы о том, как это сделать.

Я не вернусь на свое рабочее место в течение некоторого времени, поэтому сейчас я просто хочу, чтобы эти принтеры (это были бы автоматически добавленные принтеры 129/130) были удалены. Есть ли способ сделать это? Я думаю, я мог бы сделать это, щелкнув в веб-интерфейсе cups, но для 129 принтеров это немного многовато. Поэтому я ищу одну команду или советы о том, как добиться этого с помощью скрипта.

решение1

Используя эту команду: 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'
    

Связанный контент