AUST自助上网-Shell

Ubanillx 发布于 2024-05-13 690 次阅读


实验室及图书馆

#!/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
嗨!欢迎来到我的小世界。 我是来自安徽理工大学的一名计算机学生,一个在代码和咖啡之间穿梭的数字游民。我的技术旅程始于 Java 的严谨逻辑,在 Python 的优雅中找到了快速实现的乐趣,然后又被 React 和 Vue 的前端魅力深深吸引。我喜欢从零开始,用代码构建一个完整的应用,从后端的服务设计到前端的像素级实现,每一步都充满挑战与创造的快感。 我坚信生活不止眼前的 bug,还有诗和远方。我的镜头记录着校园四季的变幻,也捕捉着城市街头的光影故事。当你在这里看到一些关于摄影的分享,请不要惊讶,那是我在代码之外的另一种表达方式。此外,我还喜欢在周末骑着单车,穿梭于乡间小道,享受风带来的自由。这些爱好让我保持着对世界的好奇心和对生活的热情。 这个博客是我分享技术心得、记录成长轨迹、展示个人爱好的地方。在这里,你可能会看到: Java、Python、React、Vue 等技术深度解析 项目开发中的踩坑记录与解决方案 摄影作品与拍摄技巧分享 户外骑行或徒步的游记随笔
最后更新于 2025-05-16