Linux下远程工作防掉线的一个办法
不少小伙伴疫情期间在家会用Teamviewer远程工作。笔者来自南大,南大的网络每个月会自动logout,或者有些单位的网络一段时间无活动会自动掉线,或者一些不明意外导致掉线,就会失去远程控制,扰乱工作进度。本文提供一种解决方法,针对使用Linux系统工作的情况,所讲的例子仅对南大适用,理解原理后,可根据自身需求做修改使之适用其他单位。
首先,趁没断网,用Teamviewer进入远程电脑。然后,在远程电脑里写一个登录网络并自动输入用户名和密码的脚本。南大登录网络是用一个bras脚本,运行bras之后会提示输入用户名的密码:
bras
BRAS username: [输入用户名]
BRAS passwd: [输入密码]
那么如何自动给bras脚本输入用户名和密码? 使用expect命令。值得注意的是expect命令不属于bash,如果远程电脑里没有expect命令,需要先安装(sudo apt install expect)。
下面把这个脚本叫做autobras,写法如下:
#!/usr/bin/expect #此行写expect指令所在路径,指定此脚本由expect执行
set timeout 4 #设置等待时间为4秒
spawn ./bras #执行./bras
expect “BRAS username:”
send “[用户名]n” #这两行表示屏幕出现“BRAS username:”后输入用户名并按回车键
expect “BRAS passwd:”
send “[密码]n” #这两行表示屏幕出现“BRASpasswd:”后输入密码并按回车键
expect eof
运行此脚本,即发现等待4s后,网络自动登录。
此处用到的bras是南大的脚本,如果是别的单位,需换成别的单位的脚本,并对应调整提示输入用户名和密码的交互文本。或者直接使用curl命令(南大的bras核心其实就是一个curl)。以南大为例:
curl-d “username=[用户名]&password=[密码]”http://p.nju.edu.cn/portal_io/login
完成autobras之后,下一步要让它自动定期执行,比如每小时执行一次。可编辑/etc/crontab文件来达到此目的(需root权限)。打开/etc/crontab, 添上如下一行:
0 * * * * [用户] autobras
如此,便实现了每小时的第0分钟运行autobras重新登入。简单解释这一行指令(即crontab的语法):前五列分别表示分钟、时、天、月、星期几,如果写星号就表示每个都执行。第六列写命令的执行者,第七列写命令。所以这一行的完整解读为:不论星期几,每月每天每小时的第0分钟由[用户]执行autobras命令。这样,远程电脑就可以不断重新登入网络,解决一些断网问题。
- 设计模式专题(二十四) ——访问者模式
- PHP实用功能——modern PHP读书笔记(一)
- ModernPHP读书笔记(二) ——PHP开发标准
- iBatis.Net(6):Data Map(深入)
- iBatis.Net(5):Data Map(了解)
- ModernPHP读书笔记(三)——PHP的良好实践
- PHP开发过程的那些坑(一) ——对象拷贝
- PHP开发过程的那些坑(二) ——PHP empty函数
- Thinking in SQL系列之数据挖掘Apriori关联分析再现啤酒尿布神话
- PHP开发过程的那些坑(三) ——PHParray_shift函数
- CSS3弹性盒布局
- iBatis.Net(4):DataMapper API
- PHP开发过程的那些坑(四) ——PDO bindParam函数
- iBatis.Net(3):创建SqlMapper实例
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- pandas、numpy功能整理,包括机器学习的部分库
- 全能型终端神器!好用、免费!
- 初试geopandas
- 要实现60FPS动画, 你需要了解这些
- 数论-素数
- 自动补全、回滚!介绍一款可视化 sql 诊断利器
- 深度学习-IMBD二分类问题
- 开源、强大的Linux服务器集群管理工具,比宝塔好用!
- 组合数学-抽屉原理
- 利用 Harbor 搭建企业级私有镜像仓库
- Redis-Java项目应用(Jedis、SpringBoot整合、工具类模板)
- 微软被指剽窃他人开源作品!作者被迫终止该项目
- 秋招系列 | 推荐岗史上最强面经来袭(上)
- 一个Tomcat 如何部署多个项目?附多种解决方案及详细步骤!
- 初识SpringCloud