エンマップ出力

エンマップ出力

私はネットワークに1台のコンピュータと1台のプリンタしかないプロジェクトを進めています。私が望むのは、プリンタがネットワークに接続されているときを検出することです。私もコンピュータが192.168.3.1。しかし、DHCPを使用すると、プリンタのアドレスを知ることはできません(たとえば、簡単にするために静的に作成できますが、「彼ら」はそれを好きではありません。「彼ら」はそれが動的であることを望みます)

私が持っているのは、次のことを行うスクリプトです。

nmap -sP 192.168.3.0/24 \
  | awk '/192.168.3/ && !/192.168.3.1$/' \
  | sed 's/Nmap scan report for //'

エンマップ出力

 Nmap scan report for 192.168.3.1
 Host is up (0.014s latency).
 Nmap scan report for 192.168.3.100
 Host is up (0.012s latency).
 Nmap done: 256 IP addresses (2 hosts up) scanned in 2.54 seconds

スクリプト出力

 192.168.3.100

動作するのに数秒しかかかりませんが、より良い、よりきれいで、より速い方法はありますか?

答え1

awkこれを行うには、次のコマンドを使用できます。

nmap -sP 192.168.3.0/24 \
  | awk '/192.168.3/ && !/192.168.3.1$/{print $NF}'

awk一致する行の最後のフィールドを印刷するように求められます。

答え2

サブネットの一部に興味がないことがわかっている場合は、サブネット全体をスキャンする必要はありません。 (コンピュータを避けることは、結果を捨てる必要がないことを意味します。)

nmap -oG - -sn 192.168.3.2-254 | awk '$NF=="Up" {print $2}'

grepまたは代わりにXML出力を使用したい場合

nmap -oX - -sP 192.168.3.2-254 | xmlstarlet sel -t -m '//address[@addrtype="ipv4"]' -v '@addr' -n

バージョンに必要な場合は、-sP最新バージョンを代わりに使用してください。-snnmap


ところで、システム管理者はプリンタがDHCPを使用したいと思うかもしれませんが、既知の不変アドレスを持つように準備してはいけません。 (プリンタソフトウェアが予期せず変更されるIPアドレスを心配する必要がないように、ネットワーク上のプリンタに対してこれを行います。)これを静的(非DHCP)アドレスと区別するために「固定」アドレスとも呼ばれます。または擬似ランダム動的(DHCP)アドレス。

DHCPサーバー自体がサブネットにないことは確実ですか?それ以外の場合、プリンタは動的アドレスをどのように取得しますか?

答え3

おそらくより効率的な解決策は、次のものを使用することですgrep(Perl正規表現のサポートでGNU grepまたはgrepが必要です)。

nmap -sP 192.168.3.0/24 \
  | grep -o -P '192.168.3.(?!1$)[0-9]+'

これは192.168.3、除外で始まるすべてのIPアドレスと一致するgrep -o(のみ)です。192.168.3.1

答え4

プリンタのIPアドレスがある場合は、Get Hostnameを使用できますnmblookup -A 'IP address'。 IPアドレスでコンピュータを見つけるのではなく、この名前のコンピュータをネットワークに要求するので、後でIPが変更された場合に役立ちます。

関連情報