[Shell] 简单的自动检查ssh代理是否正常的脚本
As Follows:
#!/bin/bash RESPONSE=`curl -s --socks5 127.0.0.1: www.123cha.com`
if [ -eq $? ]
then
echo SUCCESS
else
echo FAILED
echo 'RECONNECT...'
ssh -qTfnN -D user@host
if [ -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 --socks5 127.0.0.1: www.google.com`
if [ -eq $? ]
then
echo "PROXY IS ONLINE"
echo "PID: $PID"
else
echo "PROXY IS OFFLINE..."
# 如果已经存在未结束的进程则结束此进程
if [ $PID ]
then
echo 'KILL exists Process'
kill - $PID
fi echo 'RECONNECT...'
$CMD
if [ -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] 简单的自动检查ssh代理是否正常的脚本的更多相关文章
- Linux下实现自动设置SSH代理
SSH的巨大价值体现在能够配置为代理服务器上.不像在Windows下每次还需要手动登录设置,Linux有很好的工具链能够实现自动设置SSH代理,就是expect和ssh的联合使用,再加上proxych ...
- 自动添加 ssh key 到远程主机的脚本,应用sshpass和ssh-copy-id
USERNAME=$ PASSWORD=$ HOST=$ if [ "$3" = "" ]; then echo "Missing parameter ...
- vscode 使用ESLint 自动检查,保存时自动格式化
1:全局安装eslint `npm install -g eslint`2: 打开vscode 点击 “文件”----->“首选项”---->“设置”,在右侧“用户设置/settings. ...
- Windows批处理:自动检查服务器连通性
该技术与上一篇<自动检查网络连通性>的实现原理相同,我将脚本稍微改动了下,用于检查公司服务器的连通性,简单快捷.在这里附上修改方法. @echo off color 1F title 服务 ...
- [转] 关于linux下通过shell命令(自动)修改用户密码
关于linux下通过shell命令(自动)修改用户密码 2012-04-23 18:47:39 分类: 原文地址:关于linux下(自动)修改用户密码 作者:ubuntuer 本文章总结了如何手动.自 ...
- ssh代理上网
背景: 公司开发机没有外网,但可以通过ssh连接到另一台可以上公网的机器,所以想通过ssh代理的方式上网,简单又方便,而且需要的时候上,不需要的时候也可以不上 配置: 超级简单 在开发机上建立ssh隧 ...
- SSH代理
参考: http://www.dkys.org/archives/1111.html SSH的-L与-D代理 SSH有三种代理参数-L,-D,-R.-R代理不是本次重点,有兴趣的读者可以自行查阅man ...
- IT这一行,如可高速下载国外资源之迅雷设置免费SSH代理下载国外资源
本文转自SUN'S BLOG 原文地址:IT这一行,如可高速下载国外资源之迅雷 我们这些做IT这一行的人,经常,下载一些国外的一些资源,可是让人蛋碎的是,往往这些资源下载都慢的像蜗牛,真的让人无法忍受 ...
- 关于thinkphp 中的字段自动检查机制
在thinkphp中有很好用的自动检查机制$_validate() 但是必须与create接收配合使用 可以很方便的帮助我们去判断 namespace Home\Model;use Think\Mod ...
随机推荐
- 什么是:before和:after?
前几天的晚上较全面的去看了下css的一些文档和资料,大部分的样式运用都没什么大问题了,只是有些许较陌生,但是也知道他们的存在和实现的是什么样式.今天主要想在这篇学习笔记中写的也不多,主要是针对:bef ...
- javac使用笔记
一般写java都用的IDE,今天临时要测试一下JDK安装好没,就用了一下javac,结果各种不会用 目录 javac -help查到了有javac -sourcepath,他喵的我还以为这是查找sou ...
- 等边三角形---dfs
蒜头君手上有一些小木棍,它们长短不一,蒜头君想用这些木棍拼出一个等边三角形,并且每根木棍都要用到. 例如,蒜头君手上有长度为 11,22,33,33 的4根木棍,他可以让长度为11,22 的木棍组成一 ...
- 一款基于jQuery的图片左右滑动焦点图
今天给大家分享一款基于jQuery的焦点图插件,这款jQuery焦点图插件的特点是可以多张图片左右滑动切换,可以点击切换按钮进行图片滑动,同时也支持图片自动切换.另外,这款jQuery焦点图是宽屏的, ...
- Tiny4412 虚拟机交叉编译环境的设置以及编译u-boot 和 kernel
从CD 里面拷贝如下文件到虚拟机里面 解压 查看是否有如下文件 tiny4412_qt@chenfl:~/tiny4412$ ls opt/FriendlyARM/toolschain/4.5.1/b ...
- [Linux内核]软中断与硬中断
转自:http://blog.csdn.net/zhangskd/article/details/21992933 本文主要内容:硬中断 / 软中断的原理和实现 内核版本:2.6.37 Author: ...
- API - 使用数据仓库 - 基础篇
数据仓库是集成在Spider Studio中的一个重要功能, 利用它可以非常方便的保存采集到的数据, 然后导出或者在其他脚本中再利用. 数据仓库的全部功能都集成在DataManager这个静态类里面, ...
- 很多人都不知道的监听微信、支付宝等移动app及浏览器的返回、后退、上一页按钮的事件方法
版权声明:本文为博主原创文章,未经博主允许不得转载. 在实际的应用中,我们常常需要实现在移动app和浏览器中点击返回.后退.上一页等按钮实现自己的关闭页面.调整到指定页面或执行一些其它操作的 需求,那 ...
- Asp.net回调技术Callback学习
.aspx: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.a ...
- 关于Unity中的新手编码技巧
写代码遇到报错,问题怎么办?怎么查看unity代码的接口?函数参数不记得了怎么办? 解决方法: 1.选择不懂的函数或类,按F12,跳转到代码的定义,自己去看就可知道了. 2.有的时候,选择一个函数,按 ...