Я работал над подготовкой сценария, который может помочь в мониторинге WAN Link с помощью команды traceroute.
Я подготовил нечто подобное, но не смог заставить это работать...
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
Удалите echo
и кавычки в первой строке вашего скрипта, просто оставьте команду traceroute
. Ваш сценарий должен быть записан как:
traceroute ....
grep .....
...
Для быстрой проверки не используйте 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
Возможно, вам потребуется убедить один или несколько маршрутизаторов учитывать маршрут записи.