Nmap出力の数行Grepp

Nmap出力の数行Grepp

簡単な質問なので事前にお詫び申し上げます。

そのため、IPですべてのメールサーバーを識別するためにクラスCを検索してみました。ほとんどのIPはメールサーバーではありません。私はそれらをフィルタリングしようとしています。

次の方法を試しましたが、必要なものを返しません。

nmap -p 25 192.168.15.1-254 | grep report && grep open 

そして

nmap -p 192.168.15.1-254 (grep report | grep open)

使用する必要がある別のユーティリティはありますか?それとも私の文法に問題があるのでしょうか?

答え1

明確ではありません。レポートのみを含める必要がありますか、開いている文字列のみを含める必要がありますか?その場合は、以下を使用してください grep

nmap | grep -E "report|open"

sed:

nmap | sed '/report\|open/!d'

届出と同時に開設された場合

grep:

nmap | grep report | grep open

sed:

nmap | sed '/report.*open\|open.*report/!d'

答え2

--open後処理にgrepを使用する代わりに、Nmapにオプションを渡してみてください。これにより、閉じたポートまたはフィルタリングされたポートが非表示になります。-oGまたは、-oAオプションを使用して「grepable」結果を出力することもできます。以下は、あなたが探しているものの例です。

nmap -p 25 --open -oA smtp-servers-%y%m%d 192.168.15.0/24

結果はsmtp-servers-20120607.nmap、、、、smtp-servers-20120607.gnmapに表示されますsmtp-servers-20120607.xml。次のように開いているSMTPサーバーのIPアドレスを取得できます。

awk '/\<25/open/tcp/ {print $2}' smtp-servers-*.gnmap

本当にこれらすべてを1つのパイプラインからインポートする必要がある場合は、次のことができます。

nmap -p 25 --open -oG - 192.168.15.0/24 | awk '/\<25/open/tcp/ {print $2}'

答え3

次の2つの呼び出しを実行するにはパイプが必要ですgrep

nmap ... | grep report | grep open

またはmarkersを使用しているので、awk情報を提供するだけです。

nmap ... | awk '/report/ && /open/'

そしてsed

nmap ... | sed '/report/!d;/open/!d'

関連情報