防止因意外掉线断网引起的ssh终端程序异常20140110
来源:互联网 发布:不是c语言关键字 编辑:程序博客网 时间:2024/06/11 20:58
背景:在通过ssh管理服务器的过程中,经常会出现意外断网、掉线的问题,出现断网掉线的时候终端就断开,如果此时有前台正在运行的程序或者当前的操作非常重要且不可终止,后果可能很严重,那时你就欲哭无泪呀,也许有同学说可以用nohup,不错,但是在很多时候我们也不知道什么时候掉线、什么时候断网,即使我们知道nohup,也不一定能有效的利用起来,并且每次前后台来回切换也挺麻烦的。所以找到了一种一次配置(还是对用户透明),终身受益的方式----screen。
用途:可靠的恢复异常中断的ssh会话
要点:用linux下强大的screen开启虚拟终端,配合用户的profile文件一次搞定,用户ssh登录后自动提示是否有异常中断的会话,有的话提示选择要恢复的会话,没有的话直接进入新会话,所有操作对终端用户是透明的,如果后期再结合堡垒机那就更完美了。
配置过程:
1、安装screen(略)
2、在特定用户的profile文件末尾添加如下(也可以用全局profile)
[root@admin200 ~]# more /home/chroot_test/.bash_profile
##add by lai
start_time=$(date +%Y年%m月%d日%H:%M:%S)
ssh_session_name=laijingli_$start_time
##查询挂起的会话
/usr/bin/screen -ls|/bin/grep Detached >/dev/null
if [ "$?" = "0" ]; then
##显示挂起的会话
/usr/bin/screen -ls|/bin/grep Detached
echo -ne "\033[32m\033[01m你有异常断开的ssh会话连接,请输入要恢复的会话编号,或者输入new将启用新会话:\033[0m"
##判断输入
read input_session
input_check=`/usr/bin/screen -ls|/bin/grep Detached|awk '{print $1" "$2}'|/bin/grep ^$input_session|wc -l`
#echo input_chcek:$input_check
until [ "$input_session" = "new" ] || [ "$input_check" = "1" ];do
echo -en "\033[31m\033[01m 请输入会话编号或者no:\033[0m"
read input_session
input_check=`/usr/bin/screen -ls|/bin/grep Detached|awk '{print $1" "$2}'|/bin/grep ^$input_session|wc -l`
done
##启用新会话or恢复会话
if [ "$input_session" = "new" ];then
echo 正在启用新会话
exec /usr/bin/screen -S $ssh_session_name
else
echo 正在恢复会话:`/usr/bin/screen -ls|/bin/grep Detached|awk '{print $1" "$2}'|/bin/grep ^$input_session`
exec /usr/bin/screen -r $input_session
fi
else
echo 2 new:你没有异常断开的ssh会话连接,将启用新会话
exec /usr/bin/screen -S $ssh_session_name
fi
3、效果
- 防止因意外掉线断网引起的ssh终端程序异常20140110
- 解决因IP变更引起的oracle数据库连接异常“ORA-12541:TNS:无监听程序”
- 图片二次采样有效防止因图片引起的OOM
- 因主机名有下划线及中文字符而引起的JBOSS异常
- ubuntu中怎样防止终端被意外关闭?
- 因修改/etc/ssh权限导致的ssh不能连接异常解决方法
- Linux 因修改/etc/ssh权限导致的ssh不能连接异常解决方法
- 有趣的书里关于因优化引起Bug的三个小程序
- 解决因改变oracle数据库的IP地址引起的“ORA-12541:TNS:无监听程序”
- redis,java释放资源正确方式,防止redis因resource的异常
- 因系统漏洞而中毒引起的问题
- 因栈越界引起的问题解析
- hibernate的hql因mysql的datetime类型与java的TimpStamp不对应引起的异常
- Android捕获未知异常,防止弹出意外终止对话框
- Cursor 引起的android程序崩溃异常解决方法
- 用nohup来保障后台运行的程序不因终端shell退出而终止
- 引用 ------- 防止意外的隐式转型
- 免费好用的终端程序 ssh shell
- 在OpenErp的配置文件中, 为数据库密码加密
- VSFTP在LINUX中的安装、配置
- 简单的DOS命令
- ptsname() -- 获得从伪终端名(slave pseudo-terminal)
- VC-RAS拨号源码详解(2009-11-17 08:25:24)转载▼标签: ifidc错误代码it
- 防止因意外掉线断网引起的ssh终端程序异常20140110
- 关于import com.sun.image.codec.jpeg.JPEGCodec时报错
- 图像超分辨率重建简介
- [BZOJ]2127happiness 最大权闭合图再谈
- 【复杂网络系列】gephi绘图
- C# 网络相关类汇总
- 好压打开压缩包文件名乱码问题一步教你解决
- Android--Service之提高
- 四十五 atoi,atol,strtod,strtol,strtoul详解