Логика такая:
- если не пингуется основной шлюз по умолчанию на главном роутере, то:
1) проверяем не установлен ли уже 3g как роутер по умолчанию, если установлен - выходим
2) если не установлен - устанавливаем
- если шлюз по умолчанию пингуется, то проверяем не установлен ли уже 3g как роутер по умолчанию и если установлен, то переключаемся на основной шлюз и проверяем доступность реального хоста в инете. Если доступен - остаемся на основном канале и выходим, если нет - переключаемся назад на 3g.
скрипт сидит в кроне и выполняется каждые 5 минут.
можно ли эту логику как-то оптимизировать или оптимизировать сам скрипт с вложенными условиями?
Код: Выделить всё
#!/bin/sh
default_gw="1.2.3.4"
backup_gw="192.168.0.111"
fiber () {
route change default $defgw
}
3g () {
route change default $backup_gw
}
checkgw () {
netstat -rn | head -5 | tail -1 | awk '{print $2}' | grep -q $backup_gw > /dev/null
}
if ping -q -c 3 $defgw > /dev/null
then
if checkgw
then
fiber
if ping -q -c 3 8.8.8.8 > /dev/null
then exit 0
else 3g
fi
fi
else
if checkgw
then exit 0
else 3g
fi
fi