Подтвердить что ты не робот

Самый быстрый способ пинга сетевого диапазона и возврата реагирующих хостов?

Ограничения:
1. Вопросы скорости.
2. Мне позволено пинговать один раз.

Я обсуждаю, использовать ли Python или shellscripting. Есть ли метод быстрее, чем bash?

Вот текущий код,

for ip in $(seq int1 int2); do
    ping -c 1 xxx.xxx.xxx.$ip | grep "bytes from" &
done

Что-нибудь быстрее этого?

4b9b3361

Ответ 1

Вы должны использовать NMAP:

nmap -T5 -sP 192.168.0.0-255

Ответ 2

Следующий (злой) код работает больше, чем TWICE так же быстро, как метод nmap

for i in {1..254} ;do (ping 192.168.1.$i -c 1 -w 5  >/dev/null && echo "192.168.1.$i" &) ;done

занимает около 10 секунд, где стандартный nmap

nmap -sP 192.168.1.1-254

занимает 25 секунд...

Ответ 3

Попробуйте это для уникального списка.

ping -c 5 -b 10.10.0.255 | grep 'bytes from' | awk '{ print $4 }' | sort | uniq

другой метод (выборки живых хостов):

fping -ag 192.168.1.0/24

Ответ 4

Попробуйте обе эти команды и убедитесь сами, почему arp быстрее:

PING:

для ip в $(seq 1 254); do ping -c 1 10.185.0. $ip > /dev/null; [$? -eq 0] && echo "10.185.0. $ip UP" ||:; сделано

ARP:

для ip в $(seq 1 254); do arp -n 10.185.0. $ip | адрес grep; [$? -eq 0] && echo "10.185.0. $ip UP" ||:; сделано