如何获取已安装网络打印机的 IP

如何获取已安装网络打印机的 IP

我使用 在我的 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

或者尝试安装nmapsudo apt-get install nmap)并输入 nmap并用您的 IP 地址的前三个部分192.168.1.0/24替换192.168.1(使用 查找ip addr)。

相关内容