ネットワーク上のワイヤレスプリンタのすべてのIPアドレスを取得するスクリプトを作成しようとしています。問題は、どこから始めればよいかわからないことです。CUPSを調べましたが、すべてのドキュメントまたはチュートリアルは、Webインターフェイスの使用に移る前に、コマンドラインを使用するだけで、IPを見つける方法については言及していません。 CLIだけを使用して、何かアイデアはありますか?
これによると 「Unix&Linux StackExchange」の質問と回答のスレッド インストールされているプリンタのリストは、 _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
_は、名前にPrinter
が含まれる行の_arp -a
_出力を解析します。awk '{ print $2 }'
_はIPアドレスを取得しますが、括弧(_(
_/_)
_)で囲みます。sed 's/[()]//g'
はIPアドレスをクリーンアップして、括弧を削除します。とはいえ、ネットワーク上にWi-Fiプリンターが1台もないため、ローカルセットアップでこの概念をテストする簡単な方法はありませんが、機能すると思います。 grep
引数を「printers」または「print」に調整する必要があるかもしれません。よくわかりません。これらは主にブレインストーミングのアイデアであり、この問題に取り組むのに役立つか、少なくとも正しい方向に進むのに役立つことを願っています。
Lpinfoはどうですか(CUPSがインストールされている必要があります)
(ここでPerlを使用して他のものを除外します)
参照 ここ
$ Sudo lpinfo -l -v | Perl -ne 'print if /^Device: uri = socket:/ .. /info/'
デバイス:uri = socket://192.168.0.3
クラス=ネットワーク
情報= OfficejetJ6400シリーズ
デバイス:uri = socket://192.168.0.5:9100
クラス=ネットワーク
情報= HP Officejet Pro 8610