cd ..
2025-11-2712 min24 views

AUST自助上网-Shell

#Bash#Ping#Networking#Curl#Automation
AI Summary
每分钟最多 5 次
  • 使用Shell脚本实现自动登录校园网的功能,适用于实验室、图书馆和公共区域。
  • 通过ping命令检测网络连接状态,如果无网络,则尝试使用curl命令向指定URL发起登录请求,并附带账号、密码及运营商信息等参数。
  • 脚本支持配置超时时间和检查间隔时间,以适应不同的网络环境需求。例如,设置timeout=3秒和check_time=5秒来控制网络检测的频率和等待响应的时间。
  • 登录过程中的错误处理机制包括最大尝试次数(如max_try=3),以及在每次尝试失败后记录日志并显示提示信息,有助于开发者调试问题。
  • 通过持续运行的循环结构监控网络状态的变化,在网络断开时自动重新登录,确保用户始终处于联网状态。

实验室及图书馆

#!/bin/sh

logger -t 【AUST-自助认证】 "开始运行"

## 校园网账号(学号、工号)
account="2022xxxxxx"
## 校园网密码
password="xxx"
## 运营商,校园网留空,移动"cmcc",联通"unicom",电信"aust"
isp="aust"

## curl超时时间(秒)
timeout=3
## 连网后检测间隔(秒)
check_time=5

check_login() {
  ## 使用ping命令检查网络连接,目标改为8.8.8.8
  ping -c 1 -W $timeout 8.8.8.8 > /dev/null 2>&1

  if [ $? -ne 0 ]; then
    return 2
  else
    return 0
  fi
}

do_login() {
  if ! check_login; then
    err=$((err + 1))
    logger -t 【AUST-自助认证】 "未联网,第${err}次尝试登录"
    echo "未联网,第${err}次尝试登录"
    curl "http://10.255.0.41/drcom/login?callback=dr1003&DDDDD=${account}%40${isp}&upass=${password}&0MKKey=123456&R1=0&R3=0&R6=0&para=00&v6ip=&v=0000" \
          -H 'Accept: */*' \
          -H 'Accept-Language: zh-CN,zh;q=0.9,en;q=0.8' \
          -H 'Connection: keep-alive' \
          -H 'Cookie: PHPSESSID=2o6fjtmbgdm2jjs2mcr6ck31gv' \
          -H 'Referer: http://10.255.0.19/a79.htm' \
          -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36 Edg/124.0.0.0' \
          --insecure \
          -o /dev/null -s
    return 0
  else
    return 0
  fi
}

status='offline'
changed=1
restarted=1
max_try=3

while true; do
  case $status in
    online)
      if ! check_login; then
        status='offline'
        changed=1
        logger -t 【AUST-自助认证】 "网络断开"
        echo "网络断开"
      else
        if [ $changed -eq 1 ]; then
          logger -t 【AUST-自助认证】 "已联网"
          echo "已联网"
          changed=0
        fi
      fi
      sleep $check_time
      ;;
    offline)
      if do_login; then
        status='online'
        changed=1
        logger -t 【AUST-自助认证】 "网络正在连接"
        echo "网络正在连接"
      fi
      ;;
  esac
done

公共区域

#!/bin/sh

logger -t 【AUST-自助认证】 "开始运行"

## 校园网账号(学号、工号)
account="2022xxxxxx"
## 校园网密码
password="xxx"
## 运营商,校园网留空,移动“cmcc”,联通“unicom”,电信“aust”
isp="aust"

## curl超时时间(秒)
timeout=3
## 连网后检测间隔(秒)
check_time=5

check_login() {
  ## 使用ping命令检查网络连接,目标改为8.8.8.8
  ping -c 1 -W $timeout 8.8.8.8 > /dev/null 2>&1

  if [ $? -ne 0 ]; then
    logger -t 【AUST-自助认证】 "无网络"
    echo "无网络"
    return 2
  else
    logger -t 【AUST-自助认证】 "已联网"
    echo "已联网"
    return 0
  fi
}

do_login() {
  if ! check_login; then
    err=$((err + 1))
    logger -t 【AUST-自助认证】 "未联网,第${err}次尝试登录"
    echo "未联网,第${err}次尝试登录"
    curl "http://10.255.0.19/drcom/login?callback=dr1003&DDDDD=${account}%40${isp}&upass=${password}&0MKKey=123456&R1=0&R3=0&R6=0&para=00&v6ip=&v=0000" \
          -H 'Accept: */*' \
          -H 'Accept-Language: zh-CN,zh;q=0.9,en;q=0.8' \
          -H 'Connection: keep-alive' \
          -H 'Cookie: PHPSESSID=2o6fjtmbgdm2jjs2mcr6ck31gv' \
          -H 'Referer: http://10.255.0.19/a79.htm' \
          -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36 Edg/124.0.0.0' \
          --insecure \
          -o /dev/null -s
    return 0
  else
    logger -t 【AUST-自助认证】 "已联网"
    echo "已联网"
    return 0
  fi
}

status='offline'
changed=1
restarted=1
max_try=3

while true; do
  case $status in
    online)
      if ! check_login; then
        status='offline'
        changed=1
        logger -t 【AUST-自助认证】 "网络断开"
        echo "网络断开"
      fi
      sleep $check_time
      ;;
    offline)
      if do_login; then
        status='online'
        changed=1
        logger -t 【AUST-自助认证】 "网络正在连接"
        echo "网络正在连接"
      fi
      ;;
  esac
done

/** Comments(0)*/

Loading comments...