ping网络范围和返回响应主机的最快方法?

46 linux bash performance networking ping

制约因素:
1.速度很重要.
我被允许ping一次.

我在争论是否使用Python或shellcripting.有没有比这更快的方法bash

这是当前的代码,

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

还有什么比这更快的?

Rom*_*aza 75

您应该使用NMAP:

nmap -T5 -sP 192.168.0.0-255
Run Code Online (Sandbox Code Playgroud)

  • 我认为没有理由需要Python来完成这项任务. (4认同)
  • `-sP`标志(没有端口扫描)已经被重命名为`-sn`,引自`man nmap`:_"在以前版本的Nmap中,-sn被称为-sP"_ (3认同)
  • 如下所述,您可以通过调整超时来加速nmap ping扫描.在低延迟的本地网络上,您可以使用`nmap -T5 -sP 192.168.0.0/24`.它从25秒开始.到2秒 对于/ 24子网. (2认同)

Mik*_*obe 33

以下(恶意)代码的运行速度比nmap方法快两倍

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

需要大约10秒,标准的nmap

nmap -sP 192.168.1.1-254
Run Code Online (Sandbox Code Playgroud)

需要25秒......

  • 你可以调整超时,nmap会很快. (3认同)
  • 不,实际上它是并行执行255 ping(这就是为什么它很邪恶!)。末尾的&符号表示无需等待即可在后台执行操作。 (3认同)
  • 谢谢,已经回答了,但是是的,这是最好的答案:) (2认同)
  • 添加了恶意答案的好处...默认情况下并不总是安装nmap. (2认同)

Sun*_*pta 12

试试这个唯一的列表.

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

另一种方法(获取实时主机):

fping -ag 192.168.1.0/24

  • 晴天,谢谢你的帮助:).第一个命令需要一段时间才能执行,即使我喜欢你使用awk的事实.第二个命令更好,我喜欢输出-ag很酷.但是,对于我正在进行的测试,速度至关重要.到目前为止,我没有尝试过任何可以打败nmap 所以我对你的答案给出了类似的答案,但是我选择了罗马的答案,因为它是那个帮助最快,速度最快的人.请求帮助. (2认同)

小智 5

尝试这两个命令,看看为什么 arp 更快:

平:

对于 $(seq 1 254) 中的 ip;做 ping -c 1 10.185.0.$ip > /dev/null; [$? -eq 0 ] && echo "10.185.0.$ip UP" || :; 完毕

ARP:

对于 $(seq 1 254) 中的 ip;做 arp -n 10.185.0.$ip | grep地址;[$? -eq 0 ] && echo "10.185.0.$ip UP" || :; 完毕