|
本帖最后由 ju0594 于 2016-3-18 23:48 编辑
之前发过一个帖子“有没有自动切换ss的方案?”
后来大家有说用haproxy和shell脚本的,可是对小白来说我不会呀,后来只好百度下稍微弄了点东西。
看的是飞羽博客“s-s for OpenWRT 拾遗” 里的教程
以下教程是转载的
使用计划任务检测连接状态,发生异常时候自动重启s-s
首先我们需要一个完整版的wget:
- opkg update
- opkg install wget
复制代码 然后我们新建一个脚本文件,比如/root/tester,把执行权限加上,然后写入如下内容:
- LOGTIME=$(date "+%Y-%m-%d %H:%M:%S")
- wget --spider --quiet --tries=1 --timeout=3 www.google.co.jp
- if [ "$?" == "0" ]; then
- echo '['$LOGTIME'] No Problem.'
- exit 0
- else
- wget --spider --quiet --tries=1 --timeout=3 www.baidu.com
- if [ "$?" == "0" ]; then
- echo '['$LOGTIME'] Problem decteted, restarting s-s.'
- /etc/init.d/s-s restart
- else
- echo '['$LOGTIME'] Network Problem. Do nothing.'
- fi
- fi
复制代码
该脚本通过尝试下载google主页(只是尝试建立连接并不会真的下载)来检测代理是否连通,如果尝试失败,会再次尝试下载百度主页,如果失败说明网络不通,此时什么都不做,如果下载成功,说明s-s异常,那么就重启s-s。
下面的步骤就是向crontab加上计划任务了(可以直接在Luci里面添加),比如我们每10分钟执行一次检测,就添加如下内容:
- # 文件格式说明
- # ——分钟 (0 - 59)
- # | ——小时 (0 - 23)
- # | | ——日 (1 - 31)
- # | | | ——月 (1 - 12)
- # | | | | ——星期 (0 - 7)(星期日=0或7)
- # | | | | |
- # * * * * * 被执行的命令
- */10 * * * * /root/tester >> /var/log/s-s_watchdog.log 2>&1
- 0 1 * * 7 echo "" > /var/log/s-s_watchdog.log
复制代码
倒数第二行,前面的*/10就是每十分钟,接下来的4个* 是指任意小时、天、月、星期,这样一来 就是每10分钟执行一次了;后面是执行的命令/root/tester。
日志会输出到/var/log/s-s_watchdog.log,我们可以通过它检查计划任务运行状态。
我们可以在8分的时候,停止s-s,然后静待到时间后,查看s-s是否已经启动,并且查看日志文件。
而最后一行,我们在周日凌晨1点,定时清空日志文件,否则,如果你长期开着路由不管,日志文件会变得非常大。
还有个更高级的是添加多组服务器来切换 就不转载了 贴上地址“给openwrt路由器添加自动切换ss服务器脚本”
这个脚本其实就是再第一个脚本的基础上改的。
最后:我希望能在第二个脚本的基础上添加优先级,因为不是每个人都有几组质量非常好的线路,我想让它再切换时能从优先级最高的开始重连,不行接着试第二个,直到能连接上能用的为止。希望能有对着比较精通的人帮忙改进下脚本,毕竟对这个不懂,下过功夫研究还是弄不来。
|
|