[分享] CUPS 打印服务 让 NAS 检测到打印机上电 → 自动重启 CUPS(udev 规则)

有关 Docker 的使用讨论。

版主: TerraSupportTMsupportTMjack

回复
头像
woymiany
帖子: 20
注册时间: 2020年 9月 15日 星期二 9:51 am
China

[分享] CUPS 打印服务 让 NAS 检测到打印机上电 → 自动重启 CUPS(udev 规则)

帖子 woymiany »

问题: F4-221 从TOS5 升级到TOS6.0794 后, 出现usb连接的打印机断电再上电后不能打印的问题。
usb打印机docker安装见:viewtopic.php?t=4037

解决方法:
原理:宿主机用 udev 监控 USB 打印机插入事件,一旦检测到就自动执行 docker restart cups。
1. 先在 NAS 宿主机获取打印机 USB 信息
在 NAS 命令行(SSH 进去)执行:
bash
运行

代码: 全选

lsusb
会看到类似:

代码: 全选

Bus 002 Device 005: ID 0483:5750 Epson ...
记下:厂商 ID: 设备 ID(例子:0483:5750)
2. 在 NAS 宿主机新建 udev 规则文件

代码: 全选

docker ps 
CONTAINER ID   IMAGE                           COMMAND                  CREATED       STATUS          PORTS     NAMES
d7978f157458 olbat/cupsd                     "/usr/sbin/cupsd -f"     8 days ago    Up 11 minutes             airprint

代码: 全选

 which docker
/Volume1/@apps/DockerEngine/dockerd/bin/docker
运行vi /etc/udev/rules.d/99-cups-printer.rules
写入(把 0483:5750 换成你自己的),docker 的路径和container id按自己的来写,

代码: 全选

ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="5750", RUN+="/Volume1/@apps/DockerEngine/dockerd/bin/docker restart d7978f157458"
保存退出(vi 按 Esc,输入 :wq 回车)。

3. 重载 udev 规则
运行

代码: 全选

udevadm control --reload-rules
udevadm trigger
4. 测试
关闭打印机 → 再打开
观察:NAS 会自动重启 cups 容器,10 秒左右 CUPS 自动识别并恢复打印。
回复

回到 “Docker”