Linux

Arping 在腳本中不起作用

  • March 8, 2019

在我的網路中,我有一個 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 的目標只是偶爾響應它,而在終端中手動執行它時每次都會得到響應。為什麼會發生這種情況,我該如何解決?

事實證明,啟用介面和發送 arp 請求之間的 5 秒間隔不足以使介面準備好(我的經驗測試大約給出了 10 秒)。增加間隔會導致腳本正常工作。

我有這個腳本來測量發送 arp 請求和接收它之間的時間

也許最好啟動wireshark(或tcpdump),刪除arp-table並執行arping。在 Wireshark 中,您可以看到包括時間在內的 arp 請求和 arp 響應。

我希望這可以幫助你。

為什麼要斷開乙太網介面並循環執行?

我猜這個問題是基於 ifup 太慢或類似的東西(DHCP,…)。

為什麼不使用“cron”或“at”或“watch”?

引用自:https://serverfault.com/questions/956949