テキストをcsv形式で出力するには、nmapスクリプトが必要です。

テキストをcsv形式で出力するには、nmapスクリプトが必要です。

最終的にデータベースにいくつかの情報を挿入したいと思います。そのため、次の形式のファイル(おそらくnmap)を出力しようとしています。

10.1.150.1,Up,1/3/2012,host.domain.lan
10.1.150.2,Down,1,3/2012,host2.domain.lan

nmapスキャンから日付を取得する必要はありませんが、役に立ちます。データベースにデータを挿入するときに追加できます。

私はnmapがgrep、awk、およびsed fooを使ってこれを行うことができると確信していますが、それは私の強みではありません。

編集:出力形式の提案を受け取ることができます。 XML?毎日このタスクを実行し(提供または受信)、結果をMySQLにインポートする必要があります。

EDIT2:ここまで来ました。

nmap -sn -oG - 192.168.0.50-100 | grep Host | awk  '{print $2","$5","$3}'

これは私に次のことを与えます:

192.168.0.75,Up,()
192.168.0.76,Up,(server01.domain.com)
192.168.0.77,Up,(server02.domain.com)
192.168.0.78,Up,(server03.domain.com)

次に、ブラケットを取り外すことができますか?日付を追加しますか? Nmapは常に開始時刻と終了時刻を表示しますが、各行は含まないため、awkステートメントではこれを取得できません。

答え1

答え2

他のプログラム(データベースなど)でNmap出力を使用する場合は、常にXML出力(-oX)を使用してください。好みのプログラミング言語に応じて、一般的にすでに書かれたパーサライブラリがあります。Nmap::Parserパールの場合、Nmap::Parserルビーの場合、エンディフ(Nmapに付属)Python用。本当にコマンドパイプを使用する必要がある場合は、いくつかのXMLユーティリティ(XmlStarletかなり人気があるようです。)

必要に応じて、Nmap XMLインポートをサポートする既存のプロジェクトを利用できます。メタ分析ソフトウェアドラディスオープンな付加価値サービスNmapからインポートしてデータベースに保存するのをサポートする非常に異なるツールです。

「Grepable」出力(廃止)の使用に固執しても、構文解析、特に各行に日付を入力するなどの操作には、実際のスクリプト/プログラミング言語(Perl、Python、Rubyなど)を使用することをお勧めします。かっこ。 Nmapに関連するコマンドパイプラインは、しばしば次のように表示されます。

nmap -sn -oG - 192.168.0.50-100 | perl -lanE 'if(/initiated (.*?) as:/){$d=$1;$,=","}else{print@F[1,4],$d,$F[2]=~/\((.*)\)/ if/Status:/}'

関連情報