インストールされているネットワークプリンターのIPを取得するにはどうすればいいですか

インストールされているネットワークプリンターのIPを取得するにはどうすればいいですか

を使用して、Ubuntu 14.04 マシンにネットワーク プリンターをインストールしましたsystem-config-printer。この GUI プログラムは、ローカル ネットワークを検索する「ネットワーク プリンターの検索」機能を提供します。IP アドレスに関連付けられたプリンター名のリストを返します。

では、1つ選択して正常にインストールしたとします。

しばらくして、インストールしたプリンターが間違っていることに気付きました。そこで、もう一度同じ手順を実行してみるのですが... ああ、同じタイプ (および名前) で、IP アドレスが異なるプリンターが複数あるのです!

はい、問題ありません。今インストールしたものの IP を確認して、間違ったものを再度インストールしないようにします。それでは質問です:インストールされているプリンターの IP を取得するにはどうすればよいですか?

どうやら、「プロパティ」ダイアログ (以下のサンプル) ではこの情報にアクセスできないようです (URI 行に隠されているわけではありません)。

経由で CUPS Web サーバーを使用しても成功しませんでしたhttp://localhost:631。基本的には同じ情報を取得する別の方法のようです。

編集: 質問は以下のプリンターとは関係ありませんが、より一般的なものです。OS はネットワーク探索の段階でプリンターの IP を取得できるため、その情報はどこかに保存されていると想定しています。どこに保存され、どのようにアクセスすればよいですか?それとも、どこにも保存されていないのでしょうか?

プリンタのプロパティダイアログ

答え1

拡大する上記の@JUHの解決策...

avahi-browse --all -t -r

自動検出プリンターに適したソリューションです。

残念ながら、多くのプリンターは、エンドユーザーに対して IP アドレスを使用可能な形式で公開しません。これは設計によるものです。https://www.cups.org/doc/network.html

ほとんどのネットワーク プリンタは、Bonjour と呼ばれるプロトコルをサポートしています。これは、TCP/IP や現在使用されているすべてのネットワークを定義したグループと同じ、インターネット技術タスク フォース (IETF) によって公開されたゼロ構成ネットワークZeroConf( )、マルチキャスト DNS ( mDNS)、および DNS サービス検出 ( DNS-SD) 標準の組み合わせです。

mDNS ページからの引用:

mDNS クライアントがホスト名を解決する必要がある場合、その名前を持つホストに自身の識別を要求する IP マルチキャスト クエリ メッセージを送信します。次に、そのターゲット マシンは、その IP アドレスを含むメッセージをマルチキャストします。その後、そのサブネット内のすべてのマシンはその情報を使用して、mDNS キャッシュを更新できます。どのホストも、存続時間 ( TTL) がゼロの応答パケットを送信することで、名前に対する権利を放棄できます。

したがって、mDNS プリンターの IP アドレスを正しく見つけるには、キャッシュを読み取ることができるツールが必要になります。

OP のコメントの 1 つを引用します。

ありがとうございます。私の場合、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 のほとんどの使用に必要ですが、に配置された XML サービス定義を使用してサービスを公開できます/etc/avahi/services

nss-mdnsnsswitch を使用するすべてのシステム プログラムで 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( ) をインストールして、 IP アドレスの最初の 3 つの部分を置き換えてsudo apt-get install nmapnmap と入力してください ( を使用して調べてください)。192.168.1.0/24192.168.1ip addr

関連情報