スキャンを要求されたIPのリストを含むnmap出力を処理する次のコマンドがあります。
cat ping-sweep.txt | grep "report for" | cut -d " " -f5
これにより、Webサーバーを検索したいIPのリスト(1行に1つ)のみが提供されます。
次のコマンドを使用して単一のホストをスキャンできます。
nmap -v -p 80,443,8080 10.1.1.1
リスト内のすべてのIPに対してこのスキャンを実行したいのですが、nmapで接続すると機能しないようです。これを行うにはbashスクリプトを作成する必要がありますかforeach
、それとも単純なものがありませんか?
ベストアンサー1
nmap
スキャンするすべてのアドレスを次のパラメータで指定できます。
nmap -v -p 80,443,8080 $(grep "report for" ping-sweep.txt | cut -d" " -f5)
これはgrep
ファイルで実行され(必須ではなくcat
)grep
フィルタ処理された出力を渡し、cut
その結果はnmap
コマンドラインを作成するために使用されます。これは…コマンドの置き換え。
シェルにはループがあり、さまざまな方法でループを使用できます。
grep "report for" ping-sweep.txt | cut -d" " -f5 | while read ip; do
nmap -v -p 80,443,8080 "${ip}"
done
または
for ip in $(grep "report for" ping-sweep.txt | cut -d" " -f5); do
nmap -v -p 80,443,8080 "${ip}"
done
nmap
両方とも一度に1つのアドレスのみを使用して機能します。