Страница 1 из 1

скрипт переключения между 2 ISP

Добавлено: 2012-07-06 13:18:34
alek2012
Добрый день! Есть 2 провайдера интернет. Нашел на форуме скрипт переключения.
Запихнул его в крон. Поставил на обработку каждую минуту.
Но есть проблема, когда падает основной провайдер, инет не переключается на резерв.
Переключаю вручную на резервный. И когда появляется основной, то скрипт без проблем переключает на него.
То есть скрипт может переключать только обратно.

Вот сам конфиг скрипта

#!/bin/sh
IP1=222.222.222.222
IP2=222.222.222.222
GW1=222.222.222.222
GW2=222.222.222.222

seychas=`date "+%Y-%m-%d %H:%M:%S"`

TARGET=ya.ru

/sbin/ping -q -S $IP1 -c 5 $TARGET > /dev/null 2>&1
if [ $? != 0 ]; then
/sbin/ping -q -S $IP2 -c 5 $TARGET > /dev/null 2>&1
if [ $? = 0 ]; then
if [ ! -f /tmp/gw.changed ]; then
/sbin/route change default $GW2 && /bin/echo "${seychas} router now ${GW2}" >> /root/gw.log && touch /tmp/gw.changed
fi
fi
else
if [ -f /tmp/gw.changed ]; then
/sbin/route change default $GW1 && /bin/echo "${seychas} router now ${GW1}" >> /root/gw.log && rm /tmp/gw.changed
fi
fi

Re: скрипт переключения между 2 ISP

Добавлено: 2012-07-13 11:29:04
styleprint

Код: Выделить всё

#!/bin/sh
#PATH=”/sbin:/usr/bin”
#Main Provider Router
ISP1=10.10.1.40
#Second Provider Router
ISP2=10.10.1.1
#IF 2 channels don’t work - will be set it
DEFAULT_ISP=10.10.1.1
# IP’s for ping
OVER_ISP1=213.180.213.75
OVER_ISP2=74.125.232.55
# ip style-print
ip_style="10.48.96.216"
#ip shadow home
ip_shome="10.48.88.15"
# Local source IP’s
IP1=10.10.1.45
IP2=10.10.1.45
#add routing summa
#route add 10.48.0.0 $ISP1 -static
# Verify routes
netstat -nr | grep ${OVER_ISP1} >/dev/null 2>&1
if [ $? != 0 ]; then
echo “Add static route to ${OVER_ISP1} via ${ISP1}”
route add $OVER_ISP1 $ISP1 -static
kill -9 portfwd
fi
netstat -nr | grep ${OVER_ISP2} >/dev/null 2>&1
if [ $? != 0 ]; then
echo “Add static route to ${OVER_ISP2} via  ${ISP2}”
route add ${OVER_ISP2} ${ISP2} -static
/usr/local/sbin/portfwd -c /usr/local/etc/portfw.cfg
fi
# What is work now
current_now=`netstat -nr | grep default | awk ‘{print $2}’`
echo -n “ping over ISP1:”
ping -c 2 -S ${IP1} ${OVER_ISP1} >/dev/null 2>&1
if [ $? -eq 0 ]; then
echo ” [OK]”
ISP1_stat=0
else

lse
echo ” [FAILED]”
ISP1_stat=1
#mail -s “Main Internet-channel FAILED” root < /dev/null
fi
echo -n “ping over ISP2:”
ping -c 1 -S ${IP2} ${OVER_ISP2} >/dev/null 2>&1
if [ $? -eq 0 ]; then
echo ” [OK]”
ISP2_stat=0
else
echo ” [FAILED]”
ISP2_stat=1
#mail -s “Second Internet-channel FAILED” root < /dev/null
fi
#if [ '${ISP1_stat} -eq 1 -a ${ISP2_stat} -eq 0 -a ${current_now}' = '${ISP1}' ]; then
# Для FreeBSD8 строка такая:
if [ ${ISP1_stat} -eq 1 -a ${ISP2_stat} -eq 0 -a "${current_now} -eq ${ISP1}" ]; then
echo “ISP1 suck”
route delete default
#echo 1
route add default ${ISP2}
mail -s “Main Internet-channel FAILED - switching to Second” root < /dev/null
#echo 1
fi
#if [ '${ISP1_stat} -eq 0 -a ${current_now}' != '${ISP1}' ]; then
# Для FreeBSD8:
if [ ${ISP1_stat} -eq 0 -a "${current_now} -ne ${ISP1}" ]; then
echo “Back to ISP1?
route delete default
route add default ${ISP1}
#/usr/local/etc/racoon/setkey.conf
#mail -s “Main Internet-channel OK - switching back to MAIN” root < /dev/null

fi
попробуй вот такой скрипт.
если что не ясно спрашивай подскажу.