2017-10-27 18 views
-1

私は、これらのIPが使用されるか、またはないされているかどうかを知る必要があり、サーバIPが使用されているかどうかを調べるには?

192.168.1.1 
192.168.1.2 
192.168.1.3 
192.168.1.4 

でIPを次がありますか?

私はlsofを使用して見つけることができるが、それは、コマンド以下

for ip in ${server_ip_list[@]}; do 
    lsof -i @$ip &>/dev/null && echo "$ip is used" || echo "$ip is unused" 
done 

が速くなる遅すぎるのですが、私は私が使用してより高速なコマンドを探しています

true &>/dev/null </dev/tcp/192.168.1.1/80 && echo used || echo unused 

ポートとプロトコルを指定する必要があるIプロトコルまたはポートに関係なくIPが使用されているかどうかを判断できます。

誰かが私がそれについて読むことができる解決策またはリンクを手伝ってもらえれば幸いです。

+0

よう

コードサンプルは、自身のプログラム(例えばCで)オプションを書いていますか? –

+0

@Martin Rosenau、私はbashを使用しています。 – derp

+0

使用されている唯一のIPがIPv4であるようです。あなたのリストにはIPv6アドレスがありません。 –

答えて

1

コマンドpingを使用して、特定のIPが使用されているかどうかを確認できます(ファイアウォールでICMPを無効にしないでください)。 forまたはwhileループ操作が遅すぎると思う場合は、コマンドparallelを使用して同時にコマンドを実行してみてください。

ip_check(){ 
    ip="$1" 
    ping -c 1 -W 1 "$ip" &> /dev/null 
    if [[ $? -eq 0 ]]; then 
     echo 'used' 
    else 
     echo 'unused' 
    fi 
} 

export -f ip_check 

cat ip_file.txt | parallel -k -j 0 ip_check 2> /dev/null 
関連する問題