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


2

我正在尝试创建一个脚本来获取网络上无线打印机的所有IP地址。问题是我不知道从哪里开始我已经查看过CUPS但是每个文档或教程只能在使用Web界面之前使用命令行,他们从未提及如何通过命令行查找IP只使用CLI,任何想法?

Answers:


1

根据“Unix和Linux堆栈交换”中的这个问题和答案线程,您只能通过lpstat -s或使用sudosudo 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论点应该调整为“打印机”或者“打印”; 我不确定。这些主要是头脑风暴的想法,希望能帮助你解决这个问题,或者至少让你走上正确的道路。


1

怎么样lpinfo(需要安装CUPS)
(在这里使用Perl过滤掉其他东西)
请看这里

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

设备:uri = socket://192.168.0.3
      class = network
      info = Officejet J6400 series
设备:uri = socket://192.168.0.5:9100
      class = network
      info = HP Officejet Pro 8610

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.