制約:
1. 速度が重要です。
2. ping は 1 回許可されます。
Python を使用するか、シェルスクリプトを使用するかを検討しています。より速い方法はありbash
ますか?
これが現在のコードです。
for ip in $(seq int1 int2); do
ping -c 1 xxx.xxx.xxx.$ip | grep "bytes from" &
done
これより速いものはありますか?
制約:
1. 速度が重要です。
2. ping は 1 回許可されます。
Python を使用するか、シェルスクリプトを使用するかを検討しています。より速い方法はありbash
ますか?
これが現在のコードです。
for ip in $(seq int1 int2); do
ping -c 1 xxx.xxx.xxx.$ip | grep "bytes from" &
done
これより速いものはありますか?
NMAP を使用する必要があります。
nmap -T5 -sP 192.168.0.0-255
次の (悪意のある) コードは、nmap メソッドの 2 倍以上の速さで実行されます
for i in {1..254} ;do (ping 192.168.1.$i -c 1 -w 5 >/dev/null && echo "192.168.1.$i" &) ;done
標準の nmap では約 10 秒かかります。
nmap -sP 192.168.1.1-254
25秒かかります...
ユニークなリストのためにこれを試してください。
ping -c 5 -b 10.10.0.255 | grep 'bytes from' | awk '{ print $4 }' | sort | uniq
別の方法 (ライブ ホストを取得):
fping -ag 192.168.1.0/24
これらの両方のコマンドを試して、arp の方が速い理由を自分の目で確かめてください。
$(seq 1 254) の ip の場合。ping -c 1 10.185.0.$ip > /dev/null; を実行します。[ $? -eq 0 ] && echo "10.185.0.$ip UP" || : ; 終わり
$(seq 1 254) の ip の場合。arp -n 10.185.0.$ip | を実行します。grep アドレス; [ $? -eq 0 ] && echo "10.185.0.$ip UP" || : ; 終わり
このスクリプトは、Windows 上の Git Bash (MINGW64) で実行され、ping の結果に応じてメッセージを返します。
#!/bin/bash
#$1 should be something like "19.62.55"
if [ -z "$1" ]
then
echo "No identify of the network supplied, i.e. 19.62.55"
else
ipAddress=$1
for i in {1..256} ;do
(
{
ping -w 5 $ipAddress.$i ;
result=$(echo $?);
} &> /dev/null
if [ $result = 0 ]; then
echo Successful Ping From : $ipAddress.$i
else
echo Failed Ping From : $ipAddress.$i
fi &);
done
fi