nmapから返された結果から複数の正規表現一致グループを返します。

nmapから返された結果から複数の正規表現一致グループを返します。

IPリストに対してオープンリレーテストを実行するnmapスクリプトがあります。もともとホストにコマンドで指定されたポートのオープンポートがあることがわかった場合は、ホスト名とIPのみを返す必要がありましたが、開いているポートがNSEテストが成功したという意味ではないため、これは不正確に見えます。だから、ホスト名とIP + NSEの結果を1行で返したいと思います。

私が使用するコマンドは次のとおりです。

nmap --script smtp-open-relay.nse --open -p 25,2525,587,465,2526 -iL ./short_servers_list.txt

このコマンドの出力例は次のとおりです。

* Nmap 6.40基準(http://nmap.org)2017年8月8日07:25 PDT

Nmapスキャンレポートfoo01.bar.com (10.10.10.1)

ホストが起動しました(0.0020秒遅延)。

表示されない:閉じたポート3個

港湾サービス

25/tcp オープン smtp

|_smtp-open-relay:サーバーはオープンリレーです(5月16日テスト)。

2526/tcp オープン 不明

Nmapスキャンレポートfoo02.bar.com (10.10.10.2)

ホストが起動しました(0.082秒遅延)。

表示されない:閉じたポート4個

港湾サービス

25/tcp オープン smtp

|_smtp-open-relay:SMTP EHLO nmap.scanme.org:データの受信に失敗しました:接続が閉じられました。

Nmap完了:2.16秒で10個のIPアドレス(最大6個のホスト)をスキャンしました*

以下を出力する必要があります。

foo01.bar.com (10.10.10.1) smtp-open-relay: サーバーはオープンリレーです (5/16 テスト)

foo02.bar.com (10.10.10.2) smtp-open-relay: SMTP EHLO nmap.scanme.org: 受信に失敗しました

一般的なbashツール/コマンド(grepやsedなど)を使用してこれをどのように実行できますか?

答え1

そしてアッ:

nmap --script smtp-open-relay.nse --open -p 25,2525,587,465,2526 -iL ./short_servers_list.txt \
| awk '/^ *Nmap scan report/{ sub(/^ *Nmap scan report for */, "", $0); printf "%s ",$0 }
       /_smtp-open-relay/{ sub(/^ *\|_/, "", $0); print $0 }'

関連情報