Answers:
根据“Unix和Linux堆栈交换”中的这个问题和答案线程,您只能通过lpstat -s
或使用sudo
(sudo lpstat -s
)来获取已安装的打印机列表以获取完整的设备路径。或者可能使用nmap -A
?
说了这么多,可能使用arp
与grep
和sed
与管道(链接在一起|
)能像这样工作:
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
论点应该调整为“打印机”或者“打印”; 我不确定。这些主要是头脑风暴的想法,希望能帮助你解决这个问题,或者至少让你走上正确的道路。
怎么样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