私はbashスクリプトを初めて使用し、これを機能させようとしています。
ポート80が開いているデバイスを見つけるためにIP範囲をスキャンしています...次のようになっている必要があると思います。
#!/bin/bash
echo -----------------------------------
for ip in 192.168.0.{1,.255}; do
nmap -p80 192.168.0.1
if #open; then
echo "{ip} has the port 80 open"
else
#do nothing
fi
done
echo -----------------------------------
exit 0
また、次のような結果を見たいだけです。
-----------------------------------
192.168.0.1 has the port 80 open
192.168.0.10 has the port 80 open
192.168.0.13 has the port 80 open
192.168.0.15 has the port 80 open
-----------------------------------
(したがって、エラーやnmap
の通常の出力はありません。)
誰かがこれを手伝ってくれる?
nmap
にはNice出力パラメーター-oG
(grepable output)が付属しており、解析がより簡単になります。また、スキャンするすべてのIPアドレスを繰り返す必要はありません。 nmapはネットマスクを認識します。
あなたの例は次のように書くことができます:
nmap -p80 192.168.0.0/24 -oG - | grep 80/open
-oG
はgrepable outputを有効にし、-
は出力先のファイル(この場合はstdout
)を指定します。パイプ記号は、nmap(stdout)の出力をgrepにリダイレクトします。この場合、80/open
を含む行のみが返されます。
これを試して
nmap --open -p80 192.168.0.*
--open
は、ポート80が開いているホストのみを一覧表示します。このようにして、フィルタリングはすでにnmap自体によって行われているため、シェルスクリプトをチェックインする必要がなくなります。