最終的にデータベースにいくつかの情報を挿入したいと思います。そのため、次の形式のファイル(おそらく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
見るNmap本第13章「出力形式」でのセクションがあります。「グレープ可能な出力」一度も「データベースに出力」。
答え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:/}'