-
Notifications
You must be signed in to change notification settings - Fork 420
Auto Switch Servers
Jian Chang edited this page Jun 18, 2019
·
5 revisions
0.说明
如果你有多个服务器, 并希望在当前服务器连接失败后自动切换下一个服务器, 那么可以使用此脚本.
1.准备工作
opkg update
opkg install wget ca-bundle ca-certificates
2.保存以下内容为 shell 脚本文件
#!/bin/sh
NAME=shadowsocks
is_need_switch() {
pidof ss-redir >/dev/null || return 1
wget --spider --quiet --timeout=10 https://www.facebook.com/
if [ "$?" != "0" ]; then
wget --spider --quiet --timeout=10 https://www.baidu.com/
if [ "$?" = "0" ]; then
return 0
fi
fi
return 1
}
servers=$(uci -n export $NAME | awk '$2=/servers/{print substr($3,2,9)}')
while is_need_switch; do
next_server=$(uci get $NAME.@transparent_proxy[0].main_server | awk -v servers="$servers" '{split(servers,V);for (i in V) {if (V[i] == $1) {print V[i % 11 + 1];break}}}')
if [ -n "$next_server" ]; then
uci delete $NAME.@transparent_proxy[0].main_server
for c in $(seq 2); do # 默认会启动两个进程,可以更改数字调整
uci add_list $NAME.@transparent_proxy[0].main_server=$next_server
done
uci commit $NAME
/etc/init.d/$NAME restart
fi
done
3.添加以下计划任务(每分钟)
* * * * * /path/to/shell-script >/dev/null 2>&1