接続が切断されたときにCUPSでUSBプリンタが無効になっているように見えるようにするにはどうすればよいですか?

接続が切断されたときにCUPSでUSBプリンタが無効になっているように見えるようにするにはどうすればよいですか?

私はARMシングルボードコンピュータでCUPSを使用してネットワーク経由でUSBプリンタを共有しています。電力を節約するために、電源コンセントをリモートで制御してプリンタの電源を切り、必要なときにのみWebインターフェイスを介して電源を入れることがよくあります。電源を入れた後、プリンタが初期化され、印刷ジョブを受け入れる準備が整うのに約30分かかります。

CUPSは、プリンタの電源が切れているか初期化中であっても、プリンタを「アイドル」と「準備」としてマークしますが、lsusbプリンタが利用できない間はプリンタを表示しません。
印刷ジョブを送信する前に、プリンタの電源が入っていて初期化されていることを確認する方法が必要です(プリンタが利用できない場合は、プリンタが停止または停止する可能性があります)。

ベストアンサー1

その結果、CUPSはコマンドを提供し、cupsrejectプリンタcupsacceptが使用不能としてマーク/マーク解除されます(したがって、印刷ダイアログボックスでは灰色で表示されます)。また、プリンタが利用できない理由を説明する文字列をcupsreject含むオプションの引数も受け入れます。-r

プリンタがUSBポートに接続されているとき(または電源が入っているとき)と接続が切断されたとき(終了したとき)に実行される2つの規則と組み合わせると、プリンタを「切断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(この例では0x03f00x0917は、示されているようにプリンタIDに変更する必要がありますlsusb
  • cupsacceptコマンドで指定されたプリンタ名は、cupsrejectCUPSで使用される名前と一致する必要があります。を使用してインストールされているプリンタを一覧表示できますlpstat -v

おすすめ記事