Создание сценария bash/shell для захвата вывода команды Traceroute

Я работал над подготовкой сценария, который может помочь в мониторинге WAN Link с помощью команды traceroute.

  • Скрипт для grep Primary WAN IP из traceroute и если найден, то echo Primary is UP.
  • Если первичный IP не найден, выполните поиск вторичного IP в traceroute и повторите Primary down, secondary UP.
  • Если оба IP не найдены, эхо PRimary и Secondary не работают

Я подготовил нечто подобное, но не смог заставить это работать...

 echo "`traceroute  4.4.4.4>/tmp/trace.txt`"
 grep  “1.1.1.1” /tmp/trace.txt &> /dev/null
 if [ $? -eq 0 ] ; then
     echo  “Primary Is UP“
 else
 grep  “2.2.2.2” /tmp/trace.txt &> /dev/null
 if [ $? -eq 0 ] ; then
     echo “ Primary failed, Secondary Running”
else
     echo "Primary & Secondary both failed"
 fi
 fi
0
16.11.2018, 04:05
2 ответа

Удалите echo и кавычки в первой строке вашего скрипта, просто оставьте команду traceroute . Ваш сценарий должен быть записан как:

traceroute .... 
grep .....
...
0
28.01.2020, 04:50

Для быстрой проверки не используйте traceroute, если он вам не нужен. Вместо этого попробуйте пропинговать с опцией Record Route (-R ). Используйте параметр -c, чтобы сделать только один запрос, и параметр -n, чтобы не разрешать имена узлов маршрута, и параметр -W, чтобы не ждать слишком долго сбоя. Возможно что-то вроде:

if ping -R -n -c1 -W2 4.4.4.4 >/tmp/trace.txt
then
    #echo something is up
    if grep -q '\<1\.1\.1\.1\>' /tmp/trace.txt
    then
        echo  Primary Is UP
    elif grep -q '\<2\.2\.2\.2\>' /tmp/trace.txt
    then
        echo  Primary failed, Secondary Running
    else
        echo "Primary & Secondary both failed, but something else Running"
    fi
else
    echo "Primary & Secondary both failed"
fi

Возможно, вам потребуется убедить один или несколько маршрутизаторов учитывать маршрут записи.

1
16.06.2020, 02:25

Теги

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