ネットワーク上でアクティブなIPデバイスのみを取得するnmapスクリプトがあります。
nmap -sP 192.168.1.0/24 | awk '/is up/ {print up}; {gsub (/\(|\)/,""); up = $NF}'
複数の結果がnmapから戻り値を持たないことがわかっているので、ループ内で次のコマンドを実行するためにnmapから結果のIPアドレスを取得したいと思います。
echo "# This script checks if a remote device is alive"
read va * This is suppose to receive the IP address one by one
echo "Checking Device "$va
if [ $(nc -z "$va" 22; echo $?) -eq 0 ]; then
echo $va" is Online !"
else
echo "Cannot proceed with remote connection device "$va" is Offline !"
fi
ベストアンサー1
nmapを使用して開いているTCPポート22を確認することもできます。
nmap -p 22 192.168.1.0/24 -oG - | grep -oP "Host: \K[^ ]+(?=.* 22/open/tcp.*)"