安装curl
curl是 Linux 下的网络请求工具,但 Ubuntu Desktop 默认可能未预装(尤其是精简版 / 最小化安装的系统),而你的脚本核心依赖curl实现网络检测和登录,必须先安装。步骤 1:安装 curl 工具(仅需执行一次)
打开 Ubuntu 的可视化终端,执行以下命令安装
curl:bash
运行
sudo apt update && sudo apt install curl -y
sudo apt update:更新软件源列表,确保能找到 curl 包;apt install curl -y:自动安装 curl,-y表示跳过确认步骤。
步骤 2:验证 curl 是否安装成功
安装完成后,执行以下命令验证:
bash
运行
curl --version
如果输出类似
curl 7.81.0 (x86_64-pc-linux-gnu) libcurl/7.81.0 OpenSSL/3.0.2...的版本信息,说明安装成功。配置自动登录脚本
#!/bin/bash
# ========== 配置项(替换为你的实际信息) ==========
# 登录地址(和原Python脚本一致)
LOGIN_URL="http://192.168.200.5/"
# 网络检测地址
CHECK_URL="https://www.baidu.com"
# 登录账号/密码(必填!替换为实际值)
USERNAME="你的登录账号"
PASSWORD="你的登录密码"
# 超时时间/重试次数/检测间隔(和原脚本一致)
TIMEOUT=10
RETRY_COUNT=3
CHECK_INTERVAL=60
# Linux日志路径(替代原C:\netlog)
LOG_DIR="/home/auto/netlog" # 改为你的用户名auto
LOG_FILE="${LOG_DIR}/network_connector.log"
# ========== 初始化日志目录 ==========
if [ ! -d "${LOG_DIR}" ]; then
mkdir -p "${LOG_DIR}"
chmod 755 "${LOG_DIR}"
fi
# ========== 日志函数(统一格式,替代Python logging) ==========
log() {
local LEVEL=$1
local MESSAGE=$2
echo "[$(date +'%Y-%m-%d %H:%M:%S')] [${LEVEL}] ${MESSAGE}" >> "${LOG_FILE}"
}
# ========== 检测网络连通性(替代is_connected函数) ==========
is_connected() {
# curl参数说明:
# -s:静默模式 -o /dev/null:丢弃响应内容 -w "%{http_code}":只输出状态码
local HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" --connect-timeout "${TIMEOUT}" "${CHECK_URL}")
if [ "${HTTP_CODE}" = "200" ]; then
return 0 # 网络连通
else
return 1 # 网络不通
fi
}
# ========== 执行登录(替代login函数) ==========
login() {
# 移除错误的Python try:语法
# 1. 模拟Session GET登录页面(和原Python的session.get一致)
curl -s -c /tmp/login_cookie.txt --connect-timeout "${TIMEOUT}" "${LOGIN_URL}" > /dev/null
if [ $? -ne 0 ]; then
log "ERROR" "获取登录页面失败"
return 1
fi
# 2. POST登录数据(和原Python的session.post一致)
local LOGIN_RESPONSE=$(curl -s -b /tmp/login_cookie.txt --connect-timeout "${TIMEOUT}" \
-d "DDDDD=${USERNAME}&upass=${PASSWORD}&0MKKey=登录 Login&v6ip=" "${LOGIN_URL}")
# 3. 登录后检测网络
if is_connected; then
log "INFO" "成功"
rm -f /tmp/login_cookie.txt # 清理临时Cookie
return 0
else
log "ERROR" "$(echo ${LOGIN_RESPONSE} | cut -c 1-200)" # 截取前200字符,和原脚本一致
rm -f /tmp/login_cookie.txt
return 1
fi
}
# ========== 主逻辑(替代main函数) ==========
log "INFO" "保存至: ${LOG_FILE}"
log "INFO" "地址: ${LOGIN_URL}"
log "INFO" "间隔: ${CHECK_INTERVAL}秒"
# 检测网络状态,不通则重试登录
if ! is_connected; then
log "WARNING" "another" # 保留原脚本的日志关键词
# 最多重试3次(和原脚本一致)
for ((i=1; i<=RETRY_COUNT; i++)); do
if login; then
break # 登录成功,退出重试
fi
# 非最后一次失败,等待10秒重试(修复:将Python的time.sleep(10)改为Shell的sleep 10)
if [ $i -lt $((RETRY_COUNT - 1)) ]; then
sleep 10
fi
done
# 3次重试均失败
if [ $i -eq $RETRY_COUNT ] && ! is_connected; then
log "ERROR" "3f" # 保留原脚本的日志关键词
fi
else
log "DEBUG" "win" # 保留原脚本的日志关键词
fi
# 清理临时文件
rm -f /tmp/login_cookie.txt 2>/dev/null
exit 0
配置步骤(3 步完成)
步骤 1:赋予脚本执行权限
bash
运行
# 替换为你的脚本实际路径
chmod +x /home/auto/scripts/network_connector.sh
步骤 2:配置 crontab 定时任务(替代 60 秒循环)
bash
运行
# 编辑当前用户的crontab
crontab -e
在文件末尾添加以下内容(每分钟执行一次,和原脚本 60 秒间隔一致):
bash
运行
# 每分钟执行网络登录检测脚本
* * * * * /home/auto/scripts/network_connector.sh
保存退出(vim 编辑器按
Esc→输入:wq→回车)。步骤 3:验证脚本是否正常运行
bash
运行
# 手动执行脚本测试
/home/auto/scripts/network_connector.sh
# 查看日志确认执行结果
cat /home/auto/netlog/network_connector.log