![如何获取已安装网络打印机的 IP](https://linux22.com/image/1127659/%E5%A6%82%E4%BD%95%E8%8E%B7%E5%8F%96%E5%B7%B2%E5%AE%89%E8%A3%85%E7%BD%91%E7%BB%9C%E6%89%93%E5%8D%B0%E6%9C%BA%E7%9A%84%20IP.png)
我使用 在我的 Ubuntu 14.04 机器上安装了网络打印机system-config-printer
。此 GUI 程序提供“查找网络打印机”功能,可探索本地网络。它返回与 IP 地址关联的打印机名称列表。
假设我选择一个并成功安装它。
过了一会儿,我意识到我安装的打印机是错误的。所以我再次执行该过程,然后...哦,等等,有几台打印机类型(和名称)相同,但 IP 地址不同!
好的,没问题,我们只需检查一下我刚刚安装的那个 IP,这样我就可以确保我不会再次安装错误的 IP。所以问题是:如何获取已安装打印机的 IP?
显然,“属性”对话框(下面的示例)不允许访问此信息(不,它没有隐藏在 URI 行中)。
通过 来使用 CUPS 网络服务器也没有成功http://localhost:631
,这似乎是获取相同信息的另一种方式。
编辑:这个问题与下面的打印机无关,但更为普遍:由于操作系统能够在网络探索步骤中获取打印机的 IP,我假设信息存储在某个地方。它存储在哪里以及如何访问它?或者也许它没有存储在任何地方?
答案1
扩展至上述@JUH 的解决方案...
avahi-browse --all -t -r
是自动发现打印机的正确解决方案。
不幸的是,许多打印机根本不会以任何可用形式向您(最终用户)公开其 IP 地址。这是设计使然。https://www.cups.org/doc/network.html
大多数网络打印机都支持一种称为 Bonjour 的协议,它是互联网工程任务组 (IETF) 发布的零配置网络 (
ZeroConf
)、多播 DNS (mDNS
) 和 DNS 服务发现 (DNS-SD
) 标准的组合,该组织还定义了 TCP/IP 以及我们今天使用的所有网络
引用 mDNS 页面:
当 mDNS 客户端需要解析主机名时,它会发送 IP 多播查询消息,要求具有该名称的主机表明自己的身份。然后,该目标计算机会多播包含其 IP 地址的消息。然后,该子网中的所有计算机都可以使用该信息来更新其 mDNS 缓存。任何主机都可以通过发送生存时间 (
TTL
) 等于零的响应数据包来放弃对名称的声明。
因此,要正确找到 mDNS 打印机的 IP 地址,您需要一个能够读取缓存的工具。
引用OP的一条评论:
谢谢。就我而言,
lpoptions
确实显示了很多信息,但不是 IP。相关字段看起来像device-uri=hp:/net/hp_LaserJet_2420?zc=HP2420ROOMXXX
,所以与我从 GUI 工具中获得的相同。所以我假设 IP 没有存储在我的机器中...
这是完成avahi-browse
这项工作的最佳工具...(或者,如果您来这里寻找 Mac 实用程序,Apple 提供了一个名为的实用程序dns-sd
)
引用 Avahi 页面:
Avahi 是一个通过 mDNS/DNS-SD 协议套件促进本地网络上服务发现的系统。这使您可以将笔记本电脑或计算机插入网络,并立即能够查看可以与之聊天的其他人、找到要打印的打印机或查找共享的文件。Apple MacOS X(品牌为“Bonjour”,有时为“Zeroconf”)中提供了兼容技术。
Avahi 主要针对 Linux 系统,大多数发行版都默认提供 Avahi。目前它尚未移植到 Windows,但可以在许多其他类似 BSD 的系统上运行。主要 API 是 D-Bus,是使用大多数 Avahi 所必需的,但可以使用放置在 中的 XML 服务定义来发布服务
/etc/avahi/services
。另请参阅该
nss-mdns
项目,它允许在所有系统程序中使用 nsswitch 通过 mDNS 查找 *.local 主机名
答案2
使用lpoptions
lpoptions -p <printer_name> | awk '{for (i=1; i<=NF; i++) {if ($i ~ /device-uri/) {print $i}}}'
例子
$ lpoptions -p TOSHIBA_e-STUDIO2330C | awk '{for (i=1; i<=NF; i++) {if ($i ~ /device-uri/) {print $i}}}'
device-uri=socket://192.168.20.43
获取概述lpinfo
例子
$ lpinfo -v | grep -P '://'
network dnssd://HP%20LaserJet%201022n._pdl-datastream._tcp.local/
network dnssd://TOSHIBA%20e-STUDIO2540C-07279076._printer._tcp.local/
network socket://192.168.20.201
network socket://192.168.20.203
network socket://192.168.20.204
network socket://192.168.20.205
network socket://192.168.20.206
network socket://192.168.20.207
network socket://192.168.20.43
或者nmap
nmap -sT <adress_or_address_range>
并 grep 该服务printer
例子
$ nmap -sT 192.168.20.43
Starting Nmap 6.47 ( http://nmap.org ) at 2015-07-03 08:38 CEST
Nmap scan report for 192.168.20.43
Host is up (0.0017s latency).
Not shown: 991 closed ports
PORT STATE SERVICE
21/tcp open ftp
25/tcp open smtp
80/tcp open http
139/tcp open netbios-ssn
445/tcp open microsoft-ds
515/tcp open printer
631/tcp open ipp
8080/tcp open http-proxy
9100/tcp open jetdirect
答案3
根据 HP Laserjet 2400 系列用户指南,IP 地址可在打印机本身的控制面板上找到。
答案4
看着那(这arp-scan
命令(类似于ip neigh
)。您可能需要安装它:
sudo apt-get install arp-scan
并进一步详细说明:
sudo arp-scan --interface=eth0 --localnet
其中 eth0 是您的设备(或 wlan0 或 wlp2s0)。您可以使用ifconfig
或 找到您的设备:
ip -c addr
或者尝试安装nmap
(sudo apt-get install nmap
)并输入 nmap并用您的 IP 地址的前三个部分192.168.1.0/24
替换192.168.1
(使用 查找ip addr
)。