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 }'