Всем привет!
Задался вопросом от безделья, хочу написать скрипт который бы проверял доступность канала и при его отсутствии переходил бы на другой. Что имеем - два канала подключены на разные роутеры, оба роутера подключены к "балансеру", на балансере для того что бы сменить канал реализовал двух пользователей в профайле которых приписаны команды смены дефолтного гейтвея, удаления маскарадинга на одном интерфейсе и поднятия маскарадинга на другом.
#Change route to master provider
/sbin/ip route replace default via 192.168.2.3 dev eth1
/sbin/iptables -t nat -D POSTROUTING 1
/sbin/iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
#Change route to second provider
/sbin/ip route replace default via 192.168.3.3 dev eth0
/sbin/iptables -t nat -D POSTROUTING 1
/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADEДабы отстранить пользователей от заморачивания с регистрацией пользователей на "балансере" с целью переключения на предположительно рабочий канал и хочу написать скрипт, а т.к. офис удаленный да еще и круглосуточный сам я эти действия выполняю крайне редко и не очень радует когда в ночной смене пользователь который умеет только что в чате писать да по телефону звонить... в общем такие индивидуумы сначала будят своего начальника, а потом меня...
То что пока осмыслил и написал:
#!/bin/bash
HOME=/home/sotariz/bin/changer
DATE=`/bin/date +%Y.%m.%d`
LOSTGW="0"
VPN_GW="10.0.0.1"
ROUTE_STATE="0"
ping -c 10 $VPN_GW > $HOME/ping_gw.log
LOSTGW=$(cat $HOME/ping_gw.log | tail -n2 | head -n1 | awk {'print $6'} | sed s/%//)
route -rn > $HOME/route.log
ROUTE_STATE=$(cat $HOME/route.log | head -n3 | tail -n1 | awk {'print $2'})
Дальше, как мне кажется, должно следовать if [ $ROUTE_STATE="192.168.2.3" ] then goto туда else goto сюда fi
Суть вопроса - как реализовать блоки goto? Да, можно было бы ограничится написанием нужных действий в then и else, но хочется сделать блоки к которым был бы переход по goto