我已經透過使用在我的 Ubuntu 14.04 機器上安裝了網路印表機system-config-printer
。此 GUI 程式提供「尋找網路印表機」功能,可探索本機網路。它會傳回與 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 系統,並且在大多數發行版中預設提供。現階段它還沒有移植到 Windows,但可以在許多其他類似 BSD 的系統上運作。主要 API 是 D-Bus,並且是使用大多數 Avahi 所必需的,但是可以使用放置在
/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
或嘗試安裝nmap
( sudo apt-get install nmap
) 並輸入 nmap並用您的 IP 位址的前三個部分192.168.1.0/24
替換192.168.1
(使用 查找ip addr
)。