高性能服务器配置经验指南6——BIT校园网在ubuntu中的自动检查连接状况脚本使用
在服务器上使用BIT校园网时,一定会遇到以下情况:
1、一段时间不在服务器上登陆校园网,校园网的登陆就自动掉了;
2、每个月网络账户刷新的时候,校园网需要手动登陆。
总是要在又热又吵的机房里手动登录实在是难以忍受,所以需要一个自动登录的方法。
参考链接:BIT校园网自动登录脚本
依赖:BITSRUN脚本。该脚本可以实现在命令行模式下登录/登出校园网并查看校园网的状态
主要逻辑:每隔一段时间使用bitsrun status
检测校园网状态,断连后使用 bitsrun login
重新登录。将该脚本挂在后台即可。
脚本使用方法:
首先从git上clone代码:
git clone https://gitee.com/mobius8086/bit-auto-login.git
进入脚本文件夹,打开bit_login.sh,可以更改以下五个部分:
USER_NAME="学号"
PASSWORD="校园网密码"
PERIOD=每隔多少秒检查一下登陆情况,写整数
LOG_FILE_PATH="/home/auto611/bit-auto-login/bitsrun.log" # 日志文件路径
alias python3="/home/anaconda3/bin/python3" # Python编译器的路径
使用代码参考以下命令:
# 进入之前git下来的文件夹路径,也就是bit_login.sh所在路径
# 运行脚本,这里/home/auto611/bit-auto-login/bitsrun.log是日志所在路径
nohup bash bit_login.sh > /home/auto611/bit-auto-login/bitsrun.log 2>&1 &# 关闭脚本
pkill -f bit_login.sh
运行一段时间后,看一下日志:
日志中Status is OK.
表示脚本识别到已登录,User is not logged in. Logging in...
表示脚本识别到未登录,所以启用登陆命令,实现自动登录。
但是该脚本有一个问题,虽然nohup
命令可以实现后台运行,但是如果服务器重启,脚本就不运行了,还需要手动运行,这明显不能完全满足我们的需求,所以需要加一个开机自启动功能,创建systemd
服务。
首先创建服务文件:
sudo nano /etc/systemd/system/bit-login.service
写入以下内容(注意更改为自己的路径):
[Unit]
Description=Auto login to campus network (keep running)
After=network-online.target
Wants=network-online.target[Service]
User=auto611
WorkingDirectory=/home/auto611/bit-auto-login/
Environment="PATH=/home/auto611/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
ExecStart=/bin/bash bit_login.sh > /home/auto611/bit-auto-login/bitsrun.log 2>&1
Restart=always
RestartSec=5[Install]
WantedBy=multi-user.target
参数详解:
- [Unit]:定义服务元信息和启动依赖
- Description:服务描述文字,表明这是 “校园网自动登录(保持运行)” 服务
- After=network-online.target:指定服务在网络完全就绪后启动(比 network.target 更严格,确保已获取 IP)
- Wants=network-online.target:声明依赖网络在线目标,增强网络就绪等待机制
- [Service]:定义服务运行规则
- User=auto611:以 auto611 用户身份运行服务
- WorkingDirectory:设置工作目录为脚本所在目录
- Environment:添加环境变量,包含bitsrun所在的路径
- ExecStart:启动命令,运行登录脚本并将输出写入日志
- Restart=always:无论何种原因退出(正常或异常),都自动重启服务
- RestartSec=5:失败后等待 5 秒再重启(给硬件一些反应时间)
- [Install]:定义服务安装规则
- WantedBy=multi-user.target:设置服务在多用户模式下启动,实现开机自启
之后,保存并启用服务:
# 保存退出nano(按Ctrl+O,回车,再Ctrl+X)
sudo systemctl daemon-reload # 刷新服务配置
sudo systemctl enable bit-login.service # 设置开机自启
sudo systemctl start bit-login.service # 启动服务
验证服务是否生效:
# 查看服务状态
sudo systemctl status bit-login.service# 查看日志(确认是否正常运行)
cat /home/auto611/bit-auto-login/bitsrun.log
若出现以下提示说明服务已经正常启动: