web-dev-qa-db-ja.com

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

nmapを使用して、現在オンラインになっているホストのリストを見つける方法を知っています。私がやりたいのは、IPアドレスのみのリストを取得することです。これで、次のような追加情報が表示されます。

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

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

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

19
Josh

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

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

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

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

あなたはそれを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
3
jasonwryan