Мне очень сложно выполнять печать, так как диалоговое окно принтера заполнено сотнями автоматически добавленных принтеров, и я не могу найти тот, который хочу использовать, см. скриншот ниже.
Принтеры подключены к моей рабочей сети, где, по-видимому, множество людей (включая студентов, я полагаю) «делятся» своими домашними принтерами, которые мой ноутбук затем автоматически подхватывает. (По совпадению, я иногда отключаю 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>
.
Тогда этот небольшой скрипт может вам помочь:
Выполните эту команду, чтобы убедиться, что нужный принтер отсутствует в списке:
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>
: убедитесь, что нужный принтер отсутствует в списке
Если вышесказанное подтверждается, выполните следующую команду, чтобы удалить все остальные принтеры, которые вам не нужны:
sudo bash -c 'for i in $(lpstat -a | cut -d" " -f1 | sed -E '/<NAME_OF_PRINTER>/d'); do lpadmin -x "$i"; done'