如何在 Linux 中通过命令行获取打印机 IP 地址?

如何在 Linux 中通过命令行获取打印机 IP 地址?

我正在尝试创建一个脚本来获取网络上所有无线打印机的 IP 地址。问题是我不知道从哪里开始,我研究过 CUPS,但每个文档或教程都只使用命令行,然后才转到使用 Web 界面,他们从未提到如何仅使用 CLI 查找 IP,有什么想法吗?

答案1

根据这个“Unix & Linux Stack Exchange” 上的问答主题您只能通过以下方式获取已安装打印机的列表lpstat -s或者将其与sudo( sudo lpstat -s) 一起使用以获取完整的设备路径。或者使用nmap -A

尽管如此,也许使用arpgrepsed使用管道 ( ) 链接在一起|可以像这样工作:

arp -a | grep Printer | awk '{ print $2 }' | sed 's/[()]//g'

该命令分解如下:

  • arp -a将显示所有的 arp 流量。
  • grep Printer将解析名称中arp -a包含的行的输出。Printer
  • awk '{ print $2 }'获取 IP 地址,但用括号((/ ))括起来。
  • sed 's/[()]//g'然后清理 IP 地址以删除括号。

话虽如此,我并没有简单的方法在本地设置上测试这个概念——因为我的网络上甚至没有一台 Wi-Fi 打印机——但我认为它会起作用。也许参数grep应该调整为“打印机”或“打印”;我不确定。这些主要是集思广益的想法,希望能够帮助您解决这个问题,或者至少让您走上正确的道路。

答案2

那么 lpinfo 怎么样(需要安装 CUPS)
(这里使用 Perl 来过滤掉其他东西)
参见这里

$ sudo lpinfo -l -v |  perl -ne 'print if /^Device: uri = socket:/ .. /info/'

设备:uri = socket://192.168.0.3
      class = 网络
      信息 = Officejet J6400 系列
设备:uri = socket://192.168.0.5:9100
      class = 网络
      信息 = HP Officejet Pro 8610

相关内容