前面介绍了群晖配置、容器配置,接下来进入客户端的配置部分,或者说回到最原始的需求,多终端随时随地发起打印,不再依赖于电脑。 
从外部形态来分的话,常见的终端有三类:电脑(windows 操作系统),安卓手机(譬如小米,其他设备型号没测过,方法应该是通用的)、苹果设备(包括手机、ipad、pc,苹果自成体系,且不同类型设备的使用方法通用, 这也是苹果最NB的一点) 
但是万变不离其宗,各类客户端的配置方法,本质上都是打印机协议,而打印机协议又关联到技术流派(操作系统)。 
所以,所以,从协议视角,常见的设备都可以归到三大操作系统流派:windows系统(microsoft主推),安卓系统(google主推),苹果系统(apple主推)。 
一、打印机协议 
 
协议通俗理解就是技术标准,背后牵扯到技术演化和市场博弈,且随着时代的进步,操作系统对协议的支持情况也在融合,譬如windows现在也能识别苹果主推的协议。 
1、介绍常见的打印协议(仅从科普、实用角度介绍) 
 
 
- LPD/LPR:传统 Unix 打印协议,对应 _printer._tcp,默认情况下侦听515端口;
 
 - IPP:现代网络打印标准,对应 _ipp._tcp,默认情况侦听631端口;
 
 - IPPS:IPP 的 TLS 加密版本,对应 _ipps._tcp,默认情况还是侦听631端口。
 
 - SMB:传统的「\\主机名」方式共享服务协议,对应_smb._tcp,默认侦听445端口,以win10举例,Nas220出现在网络邻居里。在共享主机的基础上,可以使用共享主机下的共享打印机(客户端会先查 _smb._tcp → 拿到主机名 → 直连 445 端口 → SMB 握手 → 然后列出 \\host\share)
 
 - mDNS:广播本机的 _ipp._tcp / _ipps._tcp 打印队列,相当于在网络中大喊我可以提供_ipp协议打印服务,默认走5353端口。
 
 - WebDAV:WebDAV 文件共享协议,对应_webdav._tcp,默认走5005端口,Windows“映射网络驱动器”可直接挂载成盘符。
 
   特别说明: 
1)在windows、Mac、安卓、Linux等系统中,广泛被支持的协议主要是:mDns、IPP、IPPS。 
也正因为此原因,我们只需要在CUPS中确保上述协议有正确配置,就可以实现多终端打印。 
2)其中mDns是由苹果最早主推,IPP是国际组织公共推荐的,苹果、微软都参与其中。 
  
2、查看协议广播情况 
 
avahi-browse命令用法: 
avahi-browse -r -a -t 
-r        --resolve        把发现的服务当场解析:把主机名、IP、端口号、TXT 记录等全部拉回来显示。不加 -r 时只列出“名字+类型”,不会展开细节。 
-a        --all        浏览所有协议类型(_http._tcp、_ipp._tcp、_ssh._tcp …)。不加 -a 时必须显式指定类型,例如 _ipp._tcp。 
-t        --terminate        解析完就自动退出。不加 -t 会一直保持监听、有新服务上线就继续打印,相当于 tail -f 模式。 
如下:- #用avahi-browse -a -t -r 输出的群晖所在本地网端所有主机(包括群晖)通过 mDNS/DNS-SD 广播出来的服务实例
 
 - #可以看到有 _printer._tcp、_ipp._tcp 、_ipps._tcp、_webdav._tcp等协议实例。
 
 - <em>#其中跟打印机相关,主要为 _printer._tcp、_ipp._tcp 、_ipps._tcp三个协议。</em>
 
 - #_webdav._tcp广播群晖主机,_dacp._tcp 主要是itunes的播放控制协议,_vhusb._tcp为虚拟USB服务协议。
 
  复制代码- root@Nas220:# avahi-browse -a -t  -r
 - +   eth0 IPv4 iTunes_Ctrl_001132F60CC46012                  _dacp._tcp           local
 - +   eth0 IPv4 iTunes_Ctrl_001132F60CC46011                  _dacp._tcp           local
 - +   eth0 IPv4 HP1106 @ nas220                          _printer._tcp        local
 - +   eth0 IPv4 HP1106 @ nas220                          _ipps._tcp           local
 - +   eth0 IPv4 HP1106 @ nas220                          _ipp._tcp            local
 - +   eth0 IPv4 nas220                                   _webdav._tcp         local
 - +   eth0 IPv4 VirtualHere USB Sharing                       _vhusb._tcp          local
 - =   eth0 IPv4 iTunes_Ctrl_001132F60CC46012                  _dacp._tcp           local
 -    hostname = [nas220.local]
 -    address = [192.168.100.**]
 -    port = [6012]
 -    txt = ["Ver=131077" "txtvers=1"]
 - =   eth0 IPv4 nas220                                   _webdav._tcp         local
 -    hostname = [nas220.local]
 -    address = [192.168.100.**]
 -    port = [5005]
 -    txt = []
 - =   eth0 IPv4 HP1106 @ nas220                          _ipp._tcp            local
 -    hostname = [nas220.local]
 -    address = [192.168.100.**]
 -    port = [631]
 -    txt = ["printer-type=0x809006" "mopria-certified=1.3" "URF=V1.4,CP1,W8,PQ4,RS300,FN3" "TLS=1.2" "UUID=44c73902-571a-3ddf-4c46-9368db05da74" "pdl=application/pdf,application/postscript,image/jpeg,image/png,image/pwg-raster,image/urf" "product=(HP LaserJet Pro P1566)" "priority=0" "note=nas220" "adminurl=https://nas220.local.:631/printers/HP1106" "ty=HP LaserJet Pro P1566 Foomatic/foo2zjs-z2 (recommended)" "rp=printers/HP1106" "qtotal=1" "txtvers=1"]
 - =   eth0 IPv4 HP1106 @ nas220                          _ipps._tcp           local
 -    hostname = [nas220.local]
 -    address = [192.168.100.**]
 -    port = [631]
 -    txt = ["printer-type=0x809006" "mopria-certified=1.3" "URF=V1.4,CP1,W8,PQ4,RS300,FN3" "TLS=1.2" "UUID=44c73902-571a-3ddf-4c46-9368db05da74" "pdl=application/pdf,application/postscript,image/jpeg,image/png,image/pwg-raster,image/urf" "product=(HP LaserJet Pro P1566)" "priority=0" "note=nas220" "adminurl=https://nas220.local.:631/printers/HP1106" "ty=HP LaserJet Pro P1566 Foomatic/foo2zjs-z2 (recommended)" "rp=printers/HP1106" "qtotal=1" "txtvers=1"]
 - =   eth0 IPv4 HP1106 @ nas220                          _printer._tcp        local
 -    hostname = [nas220.local]
 -    address = [192.168.100.**]
 -    port = [0]
 -    txt = []
 - =   eth0 IPv4 iTunes_Ctrl_001132F60CC46011                  _dacp._tcp           local
 -    hostname = [nas220.local]
 -    address = [192.168.100.**]
 -    port = [6011]
 -    txt = ["Ver=131077" "txtvers=1"]
 - =   eth0 IPv4 VirtualHere USB Sharing                       _vhusb._tcp          local
 -    hostname = [nas220-2.local]
 -    address = [192.168.100.**]
 -    port = [7575]
 -    txt = ["001122334455"]
 
  复制代码   
二、Windows端打印机配置 
 
1、自动识别方式添加打印机 
点击控制面板 -> 查看设备和打印机 -> 添加打印机。 
默认情况下,windows会自动列出CUPS端共享的打印机,选中点下一步,然后选择hp对应的驱动程序,即可添加成功。 
 
  
选中新添加的打印机-> 打印机属性->端口,在端口配置中看到:WSD-aa字样信息,很长的一串字符串,指向远程打印机,打印测试页即可验证安装成功。 
 
  
2、手工指定IPP地址添加打印机 
 
 在一些早期的windows系统对于mdns协议支持不太好,或者一些奇奇怪怪的原因,会导致自动识别打印机功能失效,采取手工添加打印机方式就好了,具体如下: 
(当然早期Windows版本也有支持mdns协议的方法:就是在windows上单独安装苹果的Bonjour组件,没错,就是安装itunes之后附带的哪个Bonjour组件。 
Bonjour组件可以独立安装,安装之后早期的windows版本就可以自动识别cups共享的打印机,不想安装就用下面介绍的手工添加方式)。 
点击控制面板 -> 查看设备和打印机 -> 添加打印机 -> 我所需的打印机未列出 -> 按名字选择共享打印机,输入打印机地址: 
http://192.168.100.**:631/printers/HP1106  或者:https://192.168.100.**:631/printers/HP1106  
特别提示: 
这个http开头的地址有点长,不太好记,其实有两个简单办法来帮我们输入: 
办法1:就是下面图2中画红线部分,windows其实已经举例告诉我们,要怎么写这个字符串。 
办法2、到cups端去复制,上一章在cups端配置完打印机后,浏览器地址就是我们要输入的字符串,拷贝下来就可以(下面图3)。 
 
  
 
点击打印机属性,可以看到端口指向刚刚输入的地址: 
  
 在windows端的打印机添加就结束了,个人更喜欢第二种方式,而且貌似速度会更快一下。 
三、安卓端打印机配置 
 
安卓端的打印机配置相与安卓版本正相关,而且国内手机厂商都对安卓进行深度魔改,这里仅以小米手机(M14)举例,思路应该是可以通用: 
方法1:使用系统打印服务 
 
在设置-> 搜索打印 -> 打印配置中,打开系统打印服务,默认情况下,很快就会识别CUPS端共享的打印机。 
 
 
  
 
 方法2:安装第三方软件(譬如:趣打印、printshare、cupsprint等) 
 
这几个软件简单比较下: 
Andriod CUPS Print:优点是Free,缺点:网上下载资源很少,英文软件,速度也很慢,对https协议支持差,有很多魔法操作,不推荐。 
趣打印和PrintShare:优点是操作简单,速度很快。缺点:收费,网上有些早期的破解版本,需要在cups端搞一些配套的魔法操作,不推荐。 
而且,感觉两个软件就是套壳的孪生兄弟,从界面到配置都一样。 
最终:实测下来,还是小米系统(Hyper OS 2.0版本)自带的系统打印服务,速度最快、最稳定。 
所以,这里就不对前面两个东西多介绍了,有需要的单独联系,资料来源于网络,仅限于学习。。。  
四、苹果端打印机配置 
 
总算到苹果手机了,体验很棒,使用无比丝滑,mac系统天生支持mdns协议,无需安装任何软件,也无需做任何配置。 
唯一缺点,就是共享和打印两个按钮放在一起,一开始容易搞错,具体操作如下: 
选中任何想打印的文件(微信、盯盯等 ),长按文件,选择用系统软件打开,选打印 ,系统会自动识别CUPS共享的打印机,选择打印份数、打印页码即可。 
特别提示: 
要是苹果手机看不到打印机,一定要检查苹果手机与群晖(打印机挂在群晖上)是不是在同一局域网内。 
  
五、小结 
 
到这里,有关打印服务器的介绍结束了。 
总结下来,坑真多,利用下班时间,前前后后搞了快一个礼拜,哪天有空再补充过程中遇到的各种魔法操作。。。 
 
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除 
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |