Наколякал скрипт для сервака с двумя gw чтобы при падении первого переключаться на второй, а после «воскрешения» первого возращаться на него же.
Вот что получилось:
#!/bin/bash
GW1=0.0.0.0
DEF_INTERFACE=ppp0
GW2=192.168.1.1
SECOND_INTERFACE=eth1
while true
do
if ping -I $DEF_INTERFACE -c5 8.8.8.8 | grep "100% packet loss" > /dev/null
then
ip route del default via $GW1 dev $DEF_INTERFACE
ip route add default via $GW2 dev $SECOND_INTERFACE
else
if route | grep default | grep 192.168.1.1 > /dev/null
then
ip route del default via $GW2 dev $SECOND_INTERFACE
ip route add default via $GW1 dev $DEF_INTERFACE
fi
fi
done
Всё работает отлично, но после первого переключения в консоль ползут сообщения вида:
RTNETLINK answers: No such process
RTNETLINK answers: File exists
То есть где-то не срабатывает условие-if? Попрошу не кидаться тапками, т.к bash ещё плохо знаю.