[Shell] 简单的自动检查ssh代理是否正常的脚本
2014-06-02 06:54
483 查看
As Follows:
Add to Crontab:
Add New Line:
## 2014-06-08 Update
实际使用过程中存在一些问题,表现如下:
当网络异常中断又连接之后,会导致出现多个代理进程,最终导致代理失败
想到的解决方法:
每次成功建立连接之后记录连接的进程id
在检测到代理失效之后需要kill掉原来的进程再新建连接
完善后的脚本如下:
## 2014-06-11 UPDATE
实际使用中还是会出现多个进程同时运行的情况。原因应该和切换网络有关
参考地址: http://stackoverflow.com/questions/1821968/pid-of-last-started-process-in-bash-script
#!/bin/bash RESPONSE=`curl -s --socks5 127.0.0.1:7070 www.123cha.com` if [ 0 -eq $? ] then echo SUCCESS else echo FAILED echo 'RECONNECT...' ssh -qTfnN -D 7070 user@host if [ 0 -eq $? ] then echo 'connect success!' else echo 'connect failed!' fi fi
Add to Crontab:
crontab -e
Add New Line:
* * * * * /bin/bash /PATH/TO/SHELL
## 2014-06-08 Update
实际使用过程中存在一些问题,表现如下:
当网络异常中断又连接之后,会导致出现多个代理进程,最终导致代理失败
想到的解决方法:
每次成功建立连接之后记录连接的进程id
在检测到代理失效之后需要kill掉原来的进程再新建连接
完善后的脚本如下:
#!/bin/bash echo `date` CMD="ssh -qTfnN -D 7070 user@host" # 如果存在运行中的进程则获取其PID PID=`ps aux|grep -F "$CMD" | grep -v -F 'grep' | awk '{printf $2}'` # 增加超时限制 30s # 根据所用代理确定使用哪个域名进行测试 RESPONSE=`curl -s -m 30 --socks5 127.0.0.1:7070 www.google.com` if [ 0 -eq $? ] then echo "PROXY IS ONLINE" echo "PID: $PID" else echo "PROXY IS OFFLINE..." # 如果已经存在未结束的进程则结束此进程 if [ $PID ] then echo 'KILL exists Process' kill -9 $PID fi echo 'RECONNECT...' $CMD if [ 0 -eq $? ] then # 获取进程id, 此处不能使用`$$` 或者 `$!`来获取,因为命令中的-f参数会产生 # 额外的进程 PID=`ps aux|grep -F "$CMD" | grep -v -F 'grep' | awk '{printf $2}'` echo 'CONNECT SUCCESS!' echo "PID: $PID" else echo 'CONNECT FAILED!' fi fi
## 2014-06-11 UPDATE
实际使用中还是会出现多个进程同时运行的情况。原因应该和切换网络有关
参考地址: http://stackoverflow.com/questions/1821968/pid-of-last-started-process-in-bash-script
相关文章推荐
- shell脚本检查某个进程是否正常,如果不正常则自动启动
- 简单监控网站访问是否正常的shell脚本,邮件报警。网站恢复后继续运行。
- Shell脚本 检查网站是否正常浏览
- 用vbs实现自动检查代理是否可用,并自动设置IE代理的脚本
- Shell整理--检查WEB是否正常脚本(附PHP脚本)
- 定时检查网站是否运行正常,自动重启TOMCAT的简单方法
- 简单的检查网站是否正常脚本
- 使用crontab和shell定时自动检查tomcat是否正常启用
- 如何通过shell脚本来检查或监控MYSQL数据库服务是否正常?
- shell脚本:检查ftp日志存储服务器上的日志是否正常上传
- 一个检查并自动安装oralce所需rpm的shell脚本
- shell脚本添加和删除apahce虚拟主机并判断是否正常
- LinuxShell-检查指定目录是否存在shell脚本文件
- 使用shell脚本实现自动SSH互信功能
- 检测mysql主从复制是否正常的shell脚本
- 每四小时检查服务端口是否正常,如果不正常则自动启动服务!
- 一个简单前端所用的知识及注意点(自动建立数据源、判断数据源是否正常连接、隐藏表等)
- shell脚本实现无密码交互的SSH自动登陆
- Shell-检查Oracle数据库是否正常
- shell脚本实现ssh全自动创建秘钥并分发