add printer in linux

linux 添加打印机

记一次arch 上添加打印机的过程, 公司有一个Ricoh c5503 的打印机,ip 192.168.4.99
通过nmap这个地址可以发现开了不少端口

1
2
3
4
5
6
7
8
9
10
11
PORT     STATE SERVICE
21/tcp open ftp
23/tcp open telnet
80/tcp open http
139/tcp open netbios-ssn
514/tcp open shell
515/tcp open printer
631/tcp open ipp
7443/tcp open oracleas-https
8080/tcp open http-proxy
9100/tcp open jetdirect

启动avahi-daemon 服务

这个服务提供mDNS功能, 可以发现局域网内的主机提供的服务,例如打印服务,ssh。 各个主机通过224.0.0.251 地址多播自己提供的服务
主机也可以配置自己想广告的服务,这是用户可选的。 具体看wiki

通过执行一下命令可以看到打印服务

1
avahi-browse --all --ignore-local --resolve --terminate

找到有用的信息如下:

1
2
3
4
5
6
+    br0 IPv4 RICOH MP C4503 [002673734B1D]                 Web Site             local
= br0 IPv4 RICOH MP C4503 [002673734B1D] Web Site local
hostname = [RNP002673734B1D.local]
address = [192.168.4.99]
port = [80]
txt = ["path=/"]

安装cupsd

启动cups-browsed.service服务后, 可以通过网页也配置打印机, 包括分享自己的打印机和添加别人的打印机。
我这里需要添加打印机服务

  1. 浏览器输入http://localhost:631/ 可以打开网页
  2. administrator -> add printer 输入root和密码
  3. 有以下选项
    1
    2
    3
    4
    5
    6
    7
    8
    Backend Error Handler
    Internet Printing Protocol (ipp)
    LPD/LPR Host or Printer
    Internet Printing Protocol (ipps)
    AppSocket/HP JetDirect
    Internet Printing Protocol (http)
    Internet Printing Protocol (https)
    Windows Printer via SAMBA
  4. 我这里选择的AppSocket/HP JetDirect, 因为nmap显示是支持jetdirect的。
  5. 输入地址socket://192.168.4.99:9100
  6. 输入自定义的打印机名称和路径/

至此,浏览器打印页面就可以看到添加的打印机了

更新

开始时我走的ipp协议,打印机地址为’ipp://192.168.4.99:631/ipp’, 后来连不上打印机

通过查端口发现有维护人员修改了打印机端口信息, 631和80端口都被封了,可能是出于安全考虑

1
2
3
4
5
6
7
8
9
10
11
12
PORT      STATE    SERVICE
21/tcp open ftp
23/tcp open telnet
80/tcp filtered http
139/tcp open netbios-ssn
514/tcp open shell
515/tcp open printer
631/tcp filtered ipp
7443/tcp open oracleas-https
8080/tcp open http-proxy
9100/tcp open jetdirect
65000/tcp open unknown

631没有开放,参考windows的同事配置,发现他们用的9100端口(9100是走socket协议),所以需要重新添加打印机
新的网络地址即为’socket://127.0.0.1:9100’