AUST自助上网-Shell

longxin liu 发布于 2024-05-13 297 次阅读


实验室

#!/bin/sh

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

## 校园网账号(学号、工号)
account="2022xxxxxx"
## 校园网密码
password="xxx"

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

check_login() {
  ## 使用ping命令检查网络连接
  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.41/0.htm' \
      -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7' \
      -H 'Accept-Language: zh-CN,zh;q=0.9,en;q=0.8' \
      -H 'Cache-Control: max-age=0' \
      -H 'Connection: keep-alive' \
      -H 'Content-Type: application/x-www-form-urlencoded' \
      -H 'Origin: http://10.255.0.41' \
      -H 'Referer: http://10.255.0.41/0.htm' \
      -H 'Upgrade-Insecure-Requests: 1' \
      -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' \
      --data-raw "DDDDD=${account}&upass=${password}&0MKKey=%B5%C7%A1%A1%C2%BC&v6ip=" \
      --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

公共区域

#!/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
此作者没有提供个人介绍
最后更新于 2024-11-07