연결이 끊어졌을 때 CUPS에서 USB 프린터가 비활성화된 것으로 표시되도록 하려면 어떻게 해야 합니까?

연결이 끊어졌을 때 CUPS에서 USB 프린터가 비활성화된 것으로 표시되도록 하려면 어떻게 해야 합니까?

저는 ARM 단일 보드 컴퓨터에서 CUPS를 사용하여 네트워크를 통해 USB 프린터를 공유하고 있습니다. 전력을 절약하기 위해 전원 콘센트를 원격으로 제어하여 프린터의 전원을 끄고 필요할 때만 웹 인터페이스를 통해 켜는 경우가 많습니다. 전원을 켠 후 프린터가 초기화되고 인쇄 작업을 수락할 준비를 갖추는 데 약 30분 정도 걸립니다.

CUPS는 프린터가 꺼져 있거나 초기화 중이더라도 프린터를 "유휴" 및 "준비"로 표시하지만, lsusb프린터를 사용할 수 없는 동안에는 프린터를 표시하지 않습니다.
인쇄 작업을 보내기 전에 프린터 전원이 켜져 있고 초기화되었는지 확인하는 방법을 원합니다(프린터를 사용할 수 없는 경우 프린터가 멈추거나 중단될 수 있음).

답변1

결과적으로 CUPS는 명령을 제공 cupsreject하고 cupsaccept프린터를 사용할 수 없는 것으로 표시/표시 해제합니다(따라서 인쇄 대화 상자에서 회색으로 표시됩니다). 또한 프린터를 사용할 수 없는 이유를 설명하는 cupsreject문자열이 포함된 선택적 인수를 허용합니다 .-r

프린터가 USB 포트에 연결될 때(또는 전원이 켜질 때)와 연결이 끊어질 때(종료될 때) 실행되는 두 가지 규칙 과 결합 udev하면 프린터를 "연결 끊김"으로 표시하고 액세스하는 모든 컴퓨터에 이를 표시할 수 있습니다. 네트워크 프린터를 통한 상태:

/etc/udev/rules.d/usb-printer.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"

이 솔루션을 자신의 시스템에 적용하려는 경우 몇 가지 고려 사항이 있습니다.

  • 규칙 파일 이름의 "usb-printer" 부분은 임의적이지만 udev파일 이름이 .rules.
  • USB 공급업체 및 제품 ID(이 예에서는 0x03f0) 0x0917는 표시된 대로 프린터 ID로 변경되어야 합니다 lsusb.
  • cupsaccept및 명령에 지정된 프린터 이름은 cupsrejectCUPS에서 사용되는 이름과 일치해야 합니다. 를 사용하여 설치된 프린터를 나열할 수 있습니다 lpstat -v.

관련 정보