Arping 在脚本中不起作用

Arping 在脚本中不起作用

在我的网络中,我有一台 Linux 主机作为默认网关,位于 192.168.150.1。在另一台主机 192.168.150.4 上,我有此脚本来测量发送 arp 请求和接收请求之间的时间:

#!/usr/bin/env bash

for i in $(seq 30 $END); do
        sudo ifconfig enp3s0 up
        sleep 5s;
        arping -I enp3s0 -c 1 192.168.150.1
        echo $(date +%s.%5N) | tee -a ./ifuptimes.txt;
        sleep 55s;
        sudo ifconfig enp3s0 down;
        sleep 1m;
done;

奇怪的是,当在脚本中发送 arping 时,192.168.150.1 处的目标只会偶尔响应,而在终端中手动运行它时每次都会得到响应。为什么会发生这种情况?我该如何修复它?

答案1

事实证明,启用接口和发送 arp 请求之间的 5 秒间隔不足以使接口准备就绪(我的经验测试显示大约需要 10 秒)。增加间隔可使脚本正常工作。

答案2

我有这个脚本来测量发送 arp 请求和接收 arp 请求之间的时间

也许最好启动 wireshark(或 tcpdump),删除 arp 表并运行 arping。在 wireshark 中,您可以看到 arp 请求和 arp 响应,包括时间。

我希望这可以帮助你。

为什么要断开以太网接口并循环运行?

我猜测问题是由于 ifup 太慢或者类似情况(DHCP,...)。

为什么不是“cron”或“at”或“watch”?

相关内容