首页 >>  正文

端口号怎么写

来源:baiyundou.net   日期:2024-09-23

作者:值友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

","force_purephv":"0","gnid":"91d63c63dc46a7fc5","img_data":[{"flag":2,"img":[{"desc":"","height":"296","title":"","url":"https://p0.ssl.img.360kuai.com/t01c7a65af410f3b32c.jpg","width":"600"}]}],"original":0,"pat":"art_src_1,fts0,sts0","powerby":"cache","pub_time":1674026391000,"pure":"","rawurl":"http://zm.news.so.com/c15936530e743d21c64edddd3b92875e","redirect":0,"rptid":"13212edb0f823639","s":"t","src":"什么值得买","tag":[],"title":"unraid 篇一:unraid设置airprint并固定打印机端口号

蒯泊陆3286映射VPN端口时怎么填写? -
车郎奇13869449437 ______ 端口号:1723映射端口:1723服务器1:服务器的IP地址其他不填试试

蒯泊陆3286Java与SQL2005连接 到这一步请问主机和端口 都怎么填 -
车郎奇13869449437 ______ 如果数据库安装在本机,主机填127.0.0.1,sqlserver端口号默认为1433数据库安装在远程服务器上,就填服务器ip地址

蒯泊陆3286网络编程中~ping程序发送的ICMP报文,对方的端口号要怎么写啊? -
车郎奇13869449437 ______ ICMP 的socket用的应该是 原始套接字socket(AF_INET, SOCK_RAW,.....);SOCK_RAW的raw_prot用来表示网络层的附属协议,不是传输层的tcp_prot、udp_prot

蒯泊陆3286手机网络设置的名称,主页,网关,用户名,密码,接入点,端口号怎么填? -
车郎奇13869449437 ______ 端口号是默认的,只要设置接入点,其他默认

蒯泊陆3286WINDOWS防火墙的添加端口的端口号应该填什么?
车郎奇13869449437 ______ 填你常用的,比较上网一定是用80,QQ是用8000,ftp21,看你需求~

蒯泊陆3286IP宽带控制里面 端口怎么填 为什么提示出现输入1 - 100000之间的整数 -
车郎奇13869449437 ______ 上行、下行的最小带宽 最大带宽那四个空格没填.上行带宽adsl一般是512K,下行带宽就是你家的宽带带宽,根据你需要填入你要限制的这批ip的最小带宽和最大带宽.

蒯泊陆3286外网的端口如何设置? -
车郎奇13869449437 ______ WINDOWS自身拨号上网,电脑直接面对因特网的就是外网.通过路由器上网,由网关面对因特网的就是内网,局域网内都是内网.设置端口映射要看路由器具体型号.以我的科磊2005DR为例.在IE地址栏输入192.168.1.1,进入路由器WEB管理界面...

蒯泊陆3286怎么用Windows防火墙关闭端口? -
车郎奇13869449437 ______ 你好,用Windows防火墙关闭端口并不是在那里关闭. 例外的意思简单来说是允许的意思. 所以你不因该点“例外”来关闭,而是“例外”旁边的点“高级”,然后在“网络连接”那里点设置, 出现“高级设置”窗口的“服务”选项卡中点击“添加”按钮. 服务描述:你要关闭的服务 第二项填你IP 然后在端口那填上你要关闭的号就行了.

蒯泊陆3286电脑端口是做什么的?请详细介绍一下 -
车郎奇13869449437 ______ 在上网的时候,我们经常会看到“端口”这个词,也会经常用到端口号,比如在FTP地址后面增加的“ 21”,21就表示端口号.那么端口到底是什么意思 呢?怎样查看端口号呢?一个端口是否成为网络恶意攻击的大门呢?,我们应该如何面对形...

蒯泊陆3286121.41.108.142:5060这类数字是啥意思
车郎奇13869449437 ______ 121.41.108.142是指主机的IP地址.IP是英文Internet Protocol的缩写,意思是“... 5060这类数字是端口号.端口包括物理端口和逻辑端口.物理端口是用于连接物理设...

(编辑:自媒体)
关于我们 | 客户服务 | 服务条款 | 联系我们 | 免责声明 | 网站地图 @ 白云都 2024