Блог им. post-factumaping — оболочка для ping

Сталкиваясь с проблемами администрирования сети, понял, что стандартная команда ping не всегда выручает. Столкнувшись с задачей определения количества потерянных пакетов без прерывания процесса мониторинга, определения времени между пропаданием пакетов (из-за проблем с коммутатором приходилось выяснять и такое) и уменьшения захламленности экрана, решил написать собственный скрипт.

#!/usr/bin/env bash
number=0
successed=0
failed=0
timeout=1
if [ -$1 == - ]
then
        echo "Usage: `basename $0` <host>"
        exit 1
fi
host $1 >/dev/null 2>&1
if [ $? != 0 ]
then
        echo "Unknown host: $1"
        exit 2
fi
while true
do
        ((number++))
        echo -n "[#$number, `date +%H:%M:%S`, ok: $successed, fail: $failed] pinging $1 (`host $1 | head -n 1 | awk '{print($NF)}'`)... "
        ping -c 1 -q -W $timeout $1 >/dev/null 2>&1
        if [ $? == 0 ]
        then
                ((successed++))
                echo -n "OK"
                echo -n -e '\r'
        else
                ((failed++))
                echo "FAIL"
        fi
        sleep 1
done


На красоту и уникальность кода не претендую, но скрипт поставленные задачи выполняет. Замечу, что используется он не для оценки задержек, а для проверки прохождения пакетов вообще.

Комментарии, замечания, пожелания приветствуются.

Комментарии (4)

$ mtr
Не совсем отвечает поставленной задаче.
А все равно post-factum молодец. :-)
Скрипт что надо. Иногда требуется подобная функциональность :)
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.