nmapを使用してオンラインマシンのIPアドレスのみを出力する


19

nmap現在オンラインになっているホストのリストを見つける方法を知っています。私がやりたいのは、IPアドレスだけのリストを取得することです。

Nmap scan report for 192.168.x.x' and 'Host is up (0.12s latency).

私が望むのは、nmapコマンドを実行して、現在オンラインになっているIPアドレスのテキストドキュメントを取得できるようにすることです。

これはまったく可能ですか?

回答:


33

これは一般的なものです:

nmap -n -sn 192.0.2.0/24 -oG - | awk '/Up$/{print $2}'

オプションとコマンドの概要:

  • -nIPアドレスが必要なだけなので、逆の名前解決をオフにします。ローカルLANでは、これもおそらく最も遅いステップなので、速度が大幅に向上します。
  • -sn「ポートスキャンを実行しない」という意味です。これ-sPは、ニーモニック「pingスキャン」で廃止された古いものと同じです。
  • -oG -「grepable」出力をstdoutに送信し、stdout はにパイプされawkます。
  • /Up$/ オンラインのホストを表す「Up」で終わる行のみを選択します。
  • {print $2} 2番目の空白で区切られたフィールド(IPアドレス)を出力します。

なぜ$が後に続くの/Upですか?コマンドnmap -n -sn 192.0.2.0/24 -oG - | awk '/Up/{print $2}'で同じ結果が得られることがわかりました。
マイケル

1
@Michael他の何かに「Up」という文字列が含まれている場合にガベージを出力しないようにすることは、単なる安全性のレベルです。そうすれば-sV、ネットワークサービスバナーからの予測不可能な文字列を含むことができる、異なるタイプのスキャンからのファイルのgrepable出力に対して実行した場合でも機能します。
盆栽バイキング

3

あなたはそれをパイプすることができますawk

nmap -sP 192.168.1.0/24 | awk '/is up/ {print up}; {gsub (/\(|\)/,""); up = $NF}'
192.168.1.1
192.168.1.10
192.168.1.20
192.168.1.30
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.