Ответ 1
Вы должны использовать NMAP:
nmap -T5 -sP 192.168.0.0-255
Ограничения:
1. Вопросы скорости.
2. Мне позволено пинговать один раз.
Я обсуждаю, использовать ли Python или shellscripting. Есть ли метод быстрее, чем 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
Следующий (злой) код работает больше, чем 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 секунд...
Попробуйте это для уникального списка.
ping -c 5 -b 10.10.0.255 | grep 'bytes from' | awk '{ print $4 }' | sort | uniq
другой метод (выборки живых хостов):
fping -ag 192.168.1.0/24
Попробуйте обе эти команды и убедитесь сами, почему arp быстрее:
для ip в $(seq 1 254); do ping -c 1 10.185.0. $ip > /dev/null; [$? -eq 0] && echo "10.185.0. $ip UP" ||:; сделано
для ip в $(seq 1 254); do arp -n 10.185.0. $ip | адрес grep; [$? -eq 0] && echo "10.185.0. $ip UP" ||:; сделано