Open GoogleCodeExporter opened 8 years ago
[deleted comment]
我也遇到同样问题
然后做了如下修改暂时可以解决问题,但不知道是否有隐患
首先cron的脚本中加入执行的用户,即改成这样
*/2 * * * * root /jffs/openvpn/openvpnDaemon.sh
然后,修改脚本文件,把-lt 4改成 -lt 5 即改成这样
#!/bin/sh
ISRUN=`ps|grep "openvpn"|wc -l`
if [[ $ISRUN -lt 5 ]]
then
echo "Not running, start!"
openvpn --config /jffs/openvpn/openvpn.conf --daemon
else
echo "Openvpn is already running."
exit
fi
Original comment by shaw...@gmail.com
on 15 Jul 2012 at 10:57
感谢楼上。
我觉得光守护进程还不够,同时检测VPN连接是否正常为佳
Original comment by yangqic...@gmail.com
on 16 Jul 2012 at 1:29
我不熟悉linux命令,希望高手帮忙。
我的思路是,设置计划任务,每五分钟 ping
199.59.148.82(twitter ip,不翻墙是ping不通的)
如果ping不通,就自动
killall openvpn
然后openvpn --config /jffs/openvpn/openvpn.conf --daemon
谁能帮忙写个cron?
Original comment by yangqic...@gmail.com
on 30 Jul 2012 at 12:28
我在Cron里是这么写的*/2 * * * *
/jffs/openvpn/openvpnDaemon.sh>/tmp/1.txt
但是没有打log, 貌似没运行?
Original comment by bycha...@gmail.com
on 21 Nov 2012 at 2:08
已经解决并测试完成。
我的做法:
在/jffs/openvpn/内新建test.sh,内容如下:
#!/bin/sh
LOG='/tmp/openvpnDaemon.log'
ISRUN=`ping -q -c 20 199.59.148.82 | grep received | awk '{print $4}'`
if [[ $ISRUN -lt 3 ]]
then
echo "$(date "+%Y-%m-%d %H:%M:%S") restart" >> $LOG
killall openvpn
openvpn --config /jffs/openvpn/openvpn.conf --daemon
else
echo "$(date "+%Y-%m-%d %H:%M:%S") ok" >> $LOG
exit
fi
然后在管理-cron里填入:
*/10 * * * * root /jffs/openvpn/test.sh
保存重启即可。
实现效果:
每10分钟会自行检测那个twitter的ip是否能ping通,如果不行,��
�动重启openvpn进程。
同时,所有log输出至/tmp/openvpnDeamon.log内。
我的LOG如下:
2012-12-14 10:50:20 ok
2012-12-14 11:00:19 ok
2012-12-14 11:10:20 ok
2012-12-14 11:20:29 restart
2012-12-14 11:30:19 ok
2012-12-14 11:40:19 ok
2012-12-14 11:50:19 ok
2012-12-14 12:00:20 ok
2012-12-14 12:10:19 ok
2012-12-14 12:20:20 ok
2012-12-14 12:30:19 ok
2012-12-14 12:40:20 ok
其中,那个11点20的是我测试的时候记录的,测试通过!
Original comment by yangqic...@gmail.com
on 14 Dec 2012 at 7:48
做了下一总结
守护脚本
OpenVPN再稳定都有意外挂掉的情况。这种时候我们就运行一个�
��本检查一次OpenVPN是否正常,不的话就再运行一个OpenVPN。
我的做法:
在/jffs/openvpn/内新建test.sh,内容如下:
#!/bin/sh
LOG='/tmp/openvpnDaemon.log'
ISRUN=`ping -q -c 20 199.59.148.82 | grep received | awk '{print $4}'`
if [[ $ISRUN -lt 3 ]]
then
echo "$(date "+%Y-%m-%d %H:%M:%S") restart" >> $LOG
killall openvpn
openvpn --config /jffs/openvpn/openvpn.conf --daemon
else
echo "$(date "+%Y-%m-%d %H:%M:%S") ok" >> $LOG
exit
fi
然后在管理-cron里填入:
*/10 * * * * root /jffs/openvpn/test.sh
保存重启即可。
实现效果:
每10分钟会自行检测那个twitter的ip是否能ping通,如果不行,��
�动重启openvpn进程。
同时,所有log输出至/tmp/openvpnDeamon.log内。
但现实情况中,gfw干扰十分频繁,有时openvpn会出现意外断线
验证错误等情况自动退出进程
但ping
twitter的ip过于频繁,等于DDos攻击,与我们不作恶只为合理学�
��知识的初衷不符,于是自我检测openvpn进程是否运行就显得��
�较重要了
在/jffs/openvpn目录下建立checkps.sh脚本
#!/bin/sh
LOG='/tmp/openvpncheck.log'
ISRUN=`ps|grep "openvpn"|wc -l`
if [[ $ISRUN -lt 4 ]]
then
echo "$(date "+%Y-%m-%d %H:%M:%S") Not running,restart" >> $LOG
openvpn --config /jffs/openvpn/openvpn.conf --daemon
else
echo "$(date "+%Y-%m-%d %H:%M:%S") Openvpn is running ok" >> $LOG
exit
fi
然后在管理-cron里填入:
*/3 * * * * root /jffs/openvpn/checkps.sh
为了不与test.sh冲突,只能选取2,3,5,7,等质数,3最小,就是你�
��
于是就大功告成。
注意,如果你的openvpn.conf不是保存在/jffs/openvpn位置,那么相�
��的,要在上面的脚本文件内容中,把 -lt
后面的数字进行修改,这取决于你最后保存的位置的字符串��
�有几个“openvpn”。如果有n个,那么那个数字就改称n+2。
config /jffs/openvpn/openvpn.conf
1 2 所以是-lt 4
Original comment by hugha...@gmail.com
on 1 Feb 2013 at 1:06
测试log如下
openvpncheck.log
2013-02-01 20:45:00 Openvpn is running ok
2013-02-01 20:48:00 Openvpn is running ok
2013-02-01 20:51:00 Openvpn is running ok
2013-02-01 20:54:00 Openvpn is running ok
2013-02-01 20:57:00 Openvpn is running ok
2013-02-01 21:00:00 Openvpn is running ok
2013-02-01 21:03:00 Openvpn is running ok
2013-02-01 21:06:00 Openvpn is running ok
openvpnDaemon.log如下
2013-02-01 20:50:19 ok
2013-02-01 21:00:19 ok
Original comment by hugha...@gmail.com
on 1 Feb 2013 at 1:09
Original issue reported on code.google.com by
yangqic...@gmail.com
on 8 Jul 2012 at 7:34