Замена traceroute командой ping

Скрипт, позволяющий посмотреть трассу прохождения пакетов. Программа traceroute бывает установлена не на всех компьютерах, и для установки ее может потребоваться наличие подключения к Интернету. А это может быть проблематично, если у вас какие-то проблемы с сетью. Особенность работы этого скрипта в том, что при указании IP-адреса он работает очень быстро, в связи с тем, что нет необходимости преобразовывать доменное имя в IP-адрес. Воспользуемся командой ping.

pingtrace.sh:

#!/bin/bash
REMOTE_HOST=$1
REMOTE_HOST_2=`host $1 | grep 'has address' | awk '{printf $4}'`
TARGET_HOST="_"
TARGET_TTL=1

echo Tracing host $REMOTE_HOST\($REMOTE_HOST_2\)

while [ "$REMOTE_HOST" != "$TARGET_HOST" -a "$REMOTE_HOST_2" != "$TARGET_HOST" ]
do
    TARGET_HOST=`ping -c 1 -t $TARGET_TTL $REMOTE_HOST | grep 'exceeded' | awk '{printf $2}'`
    if [ "$TARGET_HOST" != "" ]
    then
        echo $TARGET_HOST, TTL=$TARGET_TTL
        TARGET_TTL=$(($TARGET_TTL+1))
    else
        echo $REMOTE_HOST, TTL=$TARGET_TTL
        exit
    fi
done

Необходимо, однако, помнить, что ping и traceroute используют разный тип пакетов во время работы, и если на сетевом уровне существуют соответствующие ограничения, то скрипт работать не будет.

[wysija_form id=»2″]

Замена traceroute командой ping: 2 комментария

  1. Andreika

    Команда пинг (ping) и tracert (traceroute) — как правильно использовать?

    1. mnorin Автор записи

      Не понял вопроса. Ping используют обычно для проверки доступности хостов, tracert (traceroute) — для трассировки, просмотра списка узлов, через которые проходит пакет до указанного узла.
      Если вы о параметрах командной строки, то добавьте к командам либо — -help (в *nix), либо /? (Windows)

Обсуждение закрыто.