打印机端口一览表
作者:值友5204167881
前言
家里的老古董mp288联不了网,不舍得买新的。所以把它接入到nas中共享出来给家里人用。第一篇文章,文笔粗硬,笔记也是用md起草的,懒得搞图片,见笑了,哈哈。(zdm怎么没有代码框的,居然还必须要图片)
安装airprint
在app市场搜索,因为还需要配置,后面讲
相关信息准备
打印机热插拔或者重启后,会在unraid重新分配一个端口号,此时airprint如果依然使用比如/dev/bus/usb/001/003,就无法识别到新的端口号,故打印机无法使用。
# 查看id
lsusb
Bus 001 Device 003 Port 1-8 ID 04a9:1746 Canon, Inc. PIXMA MP280
# 查看相关属性
udevadm info -a /dev/bus/usb/001/003
udevadm info -a -n /dev/bus/usb/001/003 | grep '{serial}' | head -n1
223E3D
打印机热插拔或重启时,分配一个固定设备号
# 编辑udev rules
touch /etc/udev/rules.d/90-usb.rules
vim /etc/udev/rules.d/90-usb.rules
90-usb.rules
# 这是为了给打印机分配一个固定的设备号,分配给docker的airprint一个设备device
SUBSYSTEM=="usb", ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="1746", ATTRS{serial}=="223E3D", SYMLINK+="printer"
# 这是热插拔时会触发的脚本,待会讲
SUBSYSTEM=="usb", ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="1746", ATTRS{serial}=="223E3D", ACTION=="add", RUN+="/bin/bash /root/scripts/printer.sh"
SUBSYSTEM=="usb",固定这样写,其他系统应该可以根据上面的信息修改,自己摸索
ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="1746",根据上面的信息修改ID 04a9:1746
ATTRS{serial}=="223E3D",也是根据上面的信息修改
SYMLINK+="printer",这个会在/dev目录下生成/dev/bus/usb/003的一个软链接。用于分配给docker容器
在app市场搜索airprint安装
挂载/dev目录和刚才建的设备软链接
docker run
-d
--name='Cups-Airprint'
--net='host'
-e 'CUPSADMIN'='admin'
-e 'CUPSPASSWORD'='admin'
-v '/mnt/user/appdata/Cups-Airprint/services/':'/services':'rw'
-v '/mnt/user/appdata/Cups-Airprint/config':'/config':'rw'
-v '/mnt/user/appdata/Cups-Airprint/log/':'/var/log/cups':'rw'
-v '/dev':'/dev':'rw'
--device='/dev/printer'
--restart unless-stopped 'chuckcharlie/cups-avahi-airprint:latest'
-v '/dev':'/dev':'rw'
--device='/dev/printer'
因为未知原因,airprint可以通过/dev/printer识别到打印机,但是需要通过真实路径/dev/bus/usb/001/003连接打印机。所以要挂载两个东西。可以单独挂载试一下。
如果失败了,可以插拔一下打印机。或者手动触发一下udevadm trigger --attr-match=subsystem=usb
热插拔或重启后,自动运行重启docker容器的命令
因为端口号改变后,原容器无法使用打印机,所以要重启容器。
mkdir -p /root/scripts
touch /root/scripts/printer.sh
vim /root/scripts/printer.sh
printer.sh
#!/bin/bash
docker stop Cups-Airprint
docker start Cups-Airprint
SUBSYSTEM=="usb", ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="1746", ATTRS{serial}=="223E3D", ACTION=="add", RUN+="/bin/bash /root/scripts/printer.sh"
回到这里
ACTION=="add",插打印机会触发add事件(拔触发remove,但是没用)
RUN+="/bin/bash /root/scripts/printer.sh",运行脚本。注意这里要加上/bin/bash,脚本最好也加上#!/bin/bash
姿势骚的也可以把两条rule合在一起,但是个人喜欢不同功能分开写。
重启unraid后自动复制脚本到unraid上
unraid每次重启后都会清空根目录下所有东西,所以要把需要的东西放到u盘,也就是/boot目录下
# /boot是u盘根目录,自行选择目录
mkdir -p /boot/startup/rules.d
mkdir -p /boot/startup/scripts
touch /boot/startup/rules.d/90-usb.rules
vim /boot/startup/rules.d/90-usb.rules
SUBSYSTEM=="usb", ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="1746", ATTRS{serial}=="223E3D", SYMLINK+="printer"
SUBSYSTEM=="usb", ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="1746", ATTRS{serial}=="223E3D", ACTION=="add", RUN+="/bin/bash /root/scripts/printer.sh"
touch /boot/startup/scripts/printer.sh
vim /boot/startup/scripts/printer.sh
#!/bin/bash
docker stop Cups-Airprint
docker start Cups-Airprint
user script添加脚本
先在app市场安装userscript
在settings->user scripts中添加新脚本
随便起个名字,我写了printer
时间选at startup of array
#!/bin/bash
#persistent printer port
cp /boot/startup/rules.d/90-usb.rules /etc/udev/rules.d/
cp -R /boot/startup/scripts /root
chmod -R 777 /root/scripts
sleep 30 &
process_id=$!
echo "PID: $process_id"
wait $process_id
echo "Exit status: $?"
udevadm trigger --attr-match=subsystem=usb
docker start Cups-Airprint
sleep 30 &,因为docker服务启动需要时间,所以要sleep等待30s
process_id=$!,$!是内部Bash变量,用于在后台存储上一次运行的作业的PID
wait $process_id,等待这个pid下的任务完成,然后才运行下一条命令
echo "Exit status: $?",打印等待命令的退出状态,$?是内部Bash变量,用于保存最后执行的命令的退出状态。这里应该是0,但我不知道啥意思
udevadm trigger --attr-match=subsystem=usb,触发subsystem=usb的udev规则,这里只会触发第一条SYMLINK+="printer"。可能因为没有产生add事件
docker start Cups-Airprint,因为docker启动时/dev/printer没有生成,所以容器会启动失败,这里要启动一下
参考链接
https://blog.csdn.net/weixin_39704374/article/details/116765519
蒋瑞发1000不在同一局域网中的两台电脑怎么共用一台打印机? -
易疯刷13820999672 ______ http://www.enet.com.cn/eschool/inforcenter/A20050118383338.html Windows中共享网络打印机的技巧 局域网共享打印机 在WINDOWS XP中添加打印机很简单.在确认打印机正确连接到电脑后,就可以通过系统中的”添加打印机”安装向导来...
蒋瑞发1000如何在Windows 7下安装HP1020打印机驱动程序? -
易疯刷13820999672 ______ 第一步 1. 依次点击“开始”→“打印机和传真”. 2. 在“打印机和传真”窗口中,依次点击“文件”→“添加打印机”,进入“添加打印机向导”窗口.如图 1 打印机和传真所示: 第二步 1. 在“欢迎使用添加打印机向导”窗口中,点击“...
蒋瑞发1000如何配置虚拟机的打印机端口 -
易疯刷13820999672 ______ 使用“打印机端口”设置您可配置虚拟机打印机端口设置.一个虚拟机可以有多达 3 个打印机端口. 如何配置虚拟机的打印机端口,请执行以下操作: 1.点击菜单栏中 Parallels 图标 ,按选项 (Alt) 键,按住该键选择“配置”.或者如果在屏...
蒋瑞发1000打印机由于连续点击被卡主 -
易疯刷13820999672 ______ 解决方法 依次点击“开始”→“打印机和传真”.在“打印机和传真”窗口中,依次点击“文件”→“添加打印机”,进入“添加打印机向导”窗口.如图 1 打印机和传真所示:图 1: 打印机和传真 在“欢迎使用添加打印机向导”窗口中,点...
蒋瑞发1000如何在64位win7系统下安装局域网电脑的打印机 -
易疯刷13820999672 ______ 先找到打印机驱动 直接双击打开,默认都选择第一步 安装完成即可,会在安装中,提示你连接打印机数据线和开启电源 一步步安装驱动向导来做,就可以完成 不同品牌的打印机,安装驱动程序也不太一致,但大同小异,互为借鉴,以EPSON ...
蒋瑞发1000打印机显示未联机怎么解决? -
易疯刷13820999672 ______ 1、打印机无法连接的一般解决办法如下.点击开始,在搜素框中输入服务,找到服务并点击打开. 2、找到Print Spooler服务,点击启动此服务. 3、然后点击开始,选择设备与打印机. 4、点击添加打印机. 5、选择添加“网络、无线或…...
蒋瑞发1000怎么安装打印机? -
易疯刷13820999672 ______ 不同品牌的打印机,安装驱动程序也不太一致,但大同小异,互为借鉴,以EPSON LQ—1600K4为例,看打印机驱动程序安装步骤. 一、使用系统自带的驱动程序 1、“开始”—“打印机和传真”,点击左边窗格中“添加打印机”, 打开“欢...
蒋瑞发1000怎么在windows7中安装打印机 -
易疯刷13820999672 ______ 点击开始——右边栏有个设备和打印机项,打开.再点击“查看”下面的添加打印机,类型,选择本地打印机,选择正确的端口,和打印机驱动程序的位置,就可以了. 也有的是在打印机驱动中,直接点击安装,就OK.
蒋瑞发1000安装硬件时候出现“主题中没有签名”
易疯刷13820999672 ______ 开机启动usb设备 出现此情况,在开机启动项里禁止此启动. 重装一下试试这哥方法吧,在“欢迎使用找到新硬件向导”窗口中,选择“否,暂时不”选项,然后点击“取消”按钮,关闭提示窗口. 依次点击“开始”→“打印机和传真”,进...
蒋瑞发1000win7 旗舰版 无法查看 开始菜单 - 设备和打印机 可以安装打印机 却无法在开始菜单中查看求解决方法 -
易疯刷13820999672 ______ 此种情况出现的原因很多,极有可能是因为驱动程序无法正常工作导致的,可以考虑如下解决方法:1、先将之前安装的打印机驱动彻底的删除,点击开始——控制面板——程序——卸载程序,找到打印机相关的驱动,彻底删除 .2、首先确定...