Linux下远程工作防掉线的一个办法

时间:2022-07-22
本文章向大家介绍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命令。这样,远程电脑就可以不断重新登入网络,解决一些断网问题。