如何在Linux中透過命令列取得印表機IP位址?

如何在Linux中透過命令列取得印表機IP位址?

我正在嘗試建立一個腳本來獲取網路上無線印表機的所有 IP 位址。問題是我不知道從哪裡開始,我已經研究過 CUPS,但每個文檔或教程在繼續使用 Web 介面之前都只介紹了命令行,他們從未提到如何通過以下方式查找 IP只使用CLI,有什麼想法嗎?

答案1

根據這個「Unix & Linux Stack Exchange」上的問答主題您只能透過以下方式取得已安裝印表機的列表lpstat -ssudo或與( )一起使用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 = 套接字://192.168.0.3
      類別 = 網路
      資訊 = Officejet J6400 系列
裝置:uri = 套接字://192.168.0.5:9100
      類別 = 網路
      資訊 = HP Officejet Pro 8610

相關內容