Оказывается, CUPS предлагает команды cupsreject
и cupsaccept
для пометки/оттметки принтера как непригодного для использования (поэтому в диалоговых окнах печати он будет выделен серым цветом). Также cupsreject
принимает дополнительный параметр -r
со строкой, указывающей на причину недоступности принтера.
В сочетании с двумя правилами udev
, которые выполняются, когда принтер подключен к USB-порту (или включен) и отключен (выключен), это позволяет нам пометить принтер как "отключенный" и иметь это состояние на всех компьютерах, которые обращаются к принтеру по сети:
/etc/udev/rules. d/usb-принтер.rules
:
ACTION=="add", SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{ID_VENDOR_ID}=="03f0", ENV{ID_MODEL_ID}=="0917", RUN+="/usr/sbin/cupsaccept HP_LaserJet_3330"
ACTION=="remove", SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{ID_VENDOR_ID}=="03f0", ENV{ID_MODEL_ID}=="0917", RUN+="/usr/sbin/cupsreject -r 'udev: Printer not connected' HP_LaserJet_3330"
Некоторые заметки для тех, кто хочет адаптировать это решение для своей собственной системы:
udev
может его проигнорировать, если имя файла не заканчивается на .rules
. 0x03f0
и 0x0917
в данном случае) должны быть изменены на идентификаторы принтера, как показано в lsusb
. cupsaccept
и cupsreject
, должно совпадать с именем, используемым CUPS. Список установленных принтеров можно составить с помощью команды lpstat -v
.