Это команды маршрутизации Linux, которые я использовал до сих пор.
#!/bin/sh
# time checks in second
SLEEPTIME=58
#IP Address or domain to test ping.
TESTIP1=198.168.1.0
TESTIP2=198.168.1.1
#Ping timeout
TIMEOUT=15
# External interfaces
EXTIF1=eth0
EXTIF2=eth2
# IP external interfaces.
IP1=`/sbin/ifconfig $EXTIF1 | grep -i "117.239.106.82" | cut -f2 -d: | cut -f1 -d " "`
IP2=`/sbin/ifconfig $EXTIF2 | grep -i "14.139.183.178" | cut -f2 -d: | cut -f1 -d " "`
# Gateway
GW1=117.239.106.81 # provider 1
GW2=14.139.183.177 # provider 2
# Relative weights
W1=1
W2=1
# Broadband providers
NAME1=www.yahoo.com
NAME2=www.gmail.com
#success or failure before gateway change
SUCCESSREPEATCOUNT=4
FAILUREREPEATCOUNT=1
####### Do not change anything below this line #######
# Last link status indicates the macro status of the link we determined.
LLS1=1
LLS2=1
# Last ping status.
LPS1=1
LPS2=1
# Current ping status.
CPS1=1
CPS2=1
# Change link status indicates that the link needs to be changed.
CLS1=1
CLS2=1
# Count of repeated up status or down status.
COUNT1=0
COUNT2=0
while : ; do
ping -W $TIMEOUT -I $IP1 -c 5 $TESTIP1 > /dev/null 2>&1
RETVAL=$?
if [ $RETVAL -ne 0 ]; then
echo $NAME1 Down
CPS1=1
else
CPS1=0
fi
if [ $LPS1 -ne $CPS1 ]; then
echo Ping status changed for $NAME1 from $LPS1 to $CPS1
COUNT1=1
else
if [ $LPS1 -ne $LLS1 ]; then
COUNT1=`expr $COUNT1 + 1`
fi
fi
if [[ $COUNT1 -ge $SUCCESSREPEATCOUNT || ($LLS1 -eq 0 && $COUNT1 -ge $FAILUREREPEATCOUNT) ]]; then
echo Uptime status will be changed for $NAME1 from $LLS1
CLS1=0
COUNT1=0
if [ $LLS1 -eq 1 ]; then
LLS1=0
else
LLS1=1
fi
else
CLS1=1
fi
LPS1=$CPS1
ping -W $TIMEOUT -I $IP2 -c 5 $TESTIP2 > /dev/null 2>&1
RETVAL=$?
if [ $RETVAL -ne 0 ]; then
echo $NAME2 Down
CPS2=1
else
CPS2=0
fi
if [ $LPS2 -ne $CPS2 ]; then
echo Ping status changed for $NAME2 from $LPS2 to $CPS2
COUNT2=1
else
if [ $LPS2 -ne $LLS2 ]; then
COUNT2=`expr $COUNT2 + 1`
fi
fi
if [[ $COUNT2 -ge $SUCCESSREPEATCOUNT || ($LLS2 -eq 0 && $COUNT2 -ge $FAILUREREPEATCOUNT) ]]; then
echo Uptime status will be changed for $NAME2 from $LLS2
CLS2=0
COUNT2=0
if [ $LLS2 -eq 1 ]; then
LLS2=0
else
LLS2=1
fi
else
CLS2=1
fi
LPS2=$CPS2
if [[ $CLS1 -eq 0 || $CLS2 -eq 0 ]]; then
if [[ $LLS1 -eq 1 && $LLS2 -eq 0 ]]; then
echo Switching to $NAME2
ip route replace default via $GW2
elif [[ $LLS1 -eq 0 && $LLS2 -eq 1 ]]; then
echo Switching to $NAME1
ip route replace default via $GW1
elif [[ $LLS1 -eq 0 && $LLS2 -eq 0 ]]; then
echo Restoring default load balancing
ip route replace default scope global nexthop via $GW1 dev $EXTIF1 weight 1 \
nexthop via $GW2 dev $EXTIF2 weight 1
fi
fi
sleep $SLEEPTIME
don
Как переключиться между двумя сетевыми сетевыми картами с Powershell в Windows или кодированием в среде Linux?