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 отвечает на него только изредка, тогда как при запуске вручную в терминале каждый раз получает ответ. Почему это происходит и как это исправить?

0
задан 6 March 2019 в 07:30
2 ответа

Оказывается, интервала в 5 секунд между включением интерфейса и отправкой запроса arp недостаточно для того, чтобы интерфейс был готов (мое эмпирическое тестирование дает примерно десять секунд). Увеличение интервала привело к правильной работе сценария.

1
ответ дан 4 December 2019 в 15:44

У меня есть этот скрипт для измерения времени между отправкой запроса arp и его получением

Может быть, было бы лучше запустить wirehark (или tcpdump), отбросить arp-table и запустить arping. В wirehark вы можете увидеть запрос arp и ответ arp, включая время.

Надеюсь, это вам поможет.

Почему вы отключаете интерфейс Ethernet и запускаете его в цикле?

Я предполагаю, что проблема в на основе ifup - медленный или что-то в этом роде (DHCP, ...).

Почему не «cron», «at» или «смотреть»?

0
ответ дан 4 December 2019 в 15:44

Теги

Похожие вопросы