【教程】路由器自动定时登录校园网

news2024/11/24 9:14:22

转载请注明出处:小锋学长生活大爆炸[xfxuezhang.cn]

目录

前景提要

Python脚本

Shell脚本(推荐)

路由器挂机


实现效果

前景提要

  • 小米路由R4A千兆版安装breed+OpenWRT教程以及救砖(全脚本无需硬改)
  • 【教程】保姆级红米AX6000刷UBoot和OpenWrt固件
  • 详解OpenWrt路由器设置Crontab定时检查网络并重启

现在需要自动定时的去登录校园网,省的每次还得自己手动去登录,也太麻烦了。

Python脚本

适合在电脑上挂着

import requests
import socket
import urllib.parse
import time
import psutil
import subprocess
import json5

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36 Edg/113.0.1774.57'
}

def check():
    url = 'http://www.baidu.com'
    try:
        requests.get(url, timeout=2)
        return True
    except:
        return False

def get_ip():
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    s.connect(('10.255.255.255', 1))
    ip = s.getsockname()[0]
    print(ip)
    return ip

def get_ip2():
    url = r'http://192.168.53.229/drcom/chkstatus?callback='
    resp = requests.get(url=url, headers=headers).text.strip()[1:-1]
    return json5.loads(resp)['v46ip']

def list_interfaces():
    # 获取当前计算机上所有的网卡信息
    interfaces = psutil.net_if_addrs()
    # 遍历网卡信息,输出网卡名称
    for interface in interfaces:
        print(interface)

def set_dns(interface_name="WLAN", dns_server='223.5.5.5'):
    '''interface_name是网卡的名称,如"Ethernet/WLAN";dns_servers是DNS服务器地址,多个地址可以用逗号隔开。'''
    # 调用netsh命令修改DNS服务器
    output = subprocess.run(["netsh", "interface", "ipv4", "set", "dnsservers", interface_name, "static", dns_server], check=True, capture_output=True)
    output_str = output.stdout.decode('gbk')
    print(output_str)
    # 输出修改后的DNS服务器地址
    output = subprocess.run(["netsh", "interface", "ipv4", "show", "dnsservers", interface_name], capture_output=True)
    output_str = output.stdout.decode('gbk')
    print(output_str)

def connect():
    urls = list(['https://192.168.53.229:801/eportal/?', 'https://s2.scut.edu.cn:801/eportal/?'])
    
    data = {'c':'Portal',
            'a':'login',
            'callback':'dr1003',
            'login_method':'1',
            'user_account':',0,你的网络账号(也就是学号)主要前面的[0,]不要删',
            'user_password':'你的网络密码',
            'wlan_user_ip': get_ip2(),
            'wlan_user_ipv6':'',
            'wlan_user_mac':'000000000000',
            'wlan_ac_ip':'',
            'wlan_ac_name':'',
            'jsVersion':'3.3.2',
            'v':'10315'
    }
    for url in urls:
        try:
            res = requests.get(url + urllib.parse.urlencode(data), headers=headers, verify=False).text
            print(res)
            break
        except:
            pass


if __name__ == '__main__':
    # set_dns(dns_server='202.38.193.33')
    # set_dns(dns_server='223.5.5.5')
    connect()
    # while True:
    #     connect()
    #     # connect() if check() else None
    #     time.sleep(60*30)

Shell脚本(推荐)

适合在路由器上挂着,由上面的python脚本转换而来

#!/bin/bash

check() {
    url="http://www.baidu.com"
    if curl --output /dev/null --silent --head --fail "$url" -m 2; then
        return 0
    else
        return 1
    fi
}

get_ip() {
    ip=$(ip route get 8.8.8.8 | awk '{print $NF; exit}')
    echo "$ip"
}

get_ip2() {
    url="http://192.168.53.229/drcom/chkstatus?callback="
    resp=$(curl -s -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36 Edg/113.0.1774.57" "$url")
    #echo $resp
    #echo "$resp" | grep -Eo '"v4ip":"\K[^"]+'
    ip=$(echo "$resp" | awk -F'"' '/"v4ip":/{for(i=1;i<=NF;i++){if($i=="v4ip"){print $(i+2); exit}}}')
    echo $ip
}

list_interfaces() {
    interfaces=$(ip link show | awk -F': ' '{print $2}')
    echo "$interfaces"
}

set_dns() {
    interface_name="$1"
    dns_server="$2"
    # 调用nmcli命令修改DNS服务器
    nmcli con mod "$interface_name" ipv4.dns "$dns_server"
    # 输出修改后的DNS服务器地址
    nmcli con show "$interface_name" | grep ipv4.dns
}

connect() {
    ip=$(get_ip2)
    echo ">> 当前分配的IP:$ip"
    data="c=Portal&a=login&callback=dr1003&login_method=1&user_account=%2C0%2C你的网络账号(也就是学号)主要前面的[%2C0%2C]不要删&user_password=你的网络密码&wlan_user_ip=$ip&wlan_user_ipv6=&wlan_user_mac=000000000000&wlan_ac_ip=&wlan_ac_name=&jsVersion=3.3.2&v=10315"
    urls="https://192.168.53.229:801/eportal/? https://s2.scut.edu.cn:801/eportal/?"

    for url in $urls; do
        echo ">> 当前尝试链接:$url"
        response=$(curl -s -k -X GET "${url}${data}")
        if [ $? -eq 0 ]; then
            echo ">> 请求成功:$response"
            break
        fi
    done
}


# set_dns "WLAN" "202.38.193.33"
# set_dns "WLAN" "223.5.5.5"
connect
# while true; do
#     connect
#     # connect if check else None
#     sleep 1800
# done

路由器挂机

将shell代码保存为net.sh,然后参考这个博客,设置crontab定时执行即可。

比如,每30分钟执行一次:

*/30 * * * * sh /root/net.sh

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/601153.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Shiro】使用org.crazycake依赖的ShiroConfig

前言 整个Shiro专题中&#xff0c;这个部分是最早需要开始看的&#xff0c;主要先了解ShiroConfig都有哪些东西&#xff1b;由于这个项目使用的redis依赖是org.crazycake的shiro-redis&#xff0c;与我后面所用的不同&#xff0c;所以该部分只是简单的梳理了一下。 PS&#xf…

Hadoop高可用集群

HA高可用集群 HA介绍 什么是HA HA: High Availability&#xff0c;高可用集群&#xff0c;指的是集群7*24小时不间断服务。 为什么需要HA 在HDFS中&#xff0c;有NameNode、DataNode和SecondaryNameNode角色的分布&#xff0c;客户端所有的操作都是要与NameNode交互的&#xff…

PG数据库提示: FATAL: sorry, too many clients already

目录 场景&#xff1a; idea启动提示如下错误 翻译&#xff1a; 连接数相关查询&#xff1a; 原因分析&#xff1a; 解决方法&#xff1a; 场景&#xff1a; idea启动提示如下错误 org.postgresql.util.PSQLException: FATAL: sorry, too many clients alreadyat org.pos…

运维小白必学篇之基础篇第四集:vim文本编辑器实验

vim文本编辑器实验 1、创建a.txt文件&#xff0c;并复制到/tmp/file/目录下 2、创建1.txt文件的软链接文件11.txt 3、移动a.txt文件到/mnt目录下并改名为abc.txt 4、创建d1、d2目录&#xff0c;并在d1目录中创建文件a1、a2 5、删除d1目录和d2目录 6、查看/etc/man_db.conf文件的…

DPCNN:深度金字塔 CNN 文本分类网络

DPCNN&#xff08;Deep Pyramid CNN&#xff09;&#xff0c;是2017年腾讯AI-Lab提出的一种用于文本分类的网络&#xff0c;可以称之为"深度金字塔卷积神经网络"。 论文&#xff1a;Deep Pyramid Convolutional Neural Networks for Text Categorization 在之前的博…

运维小白必学篇之基础篇第五集:用户和组实验

用户和组实验 实验者&#xff1a;胡 阳 1、创建u1用户&#xff0c;指定UID为1050&#xff0c;并为该用户设置密码 2、创建u2用户&#xff0c;设置其不能登录操作系统 3、创建u3用户&#xff0c;指定其家目录为/mnt/u3 4、将u1用户改名为s1 5、创建用户u1&#xff0c;指定其UID…

为什么企业都需要一个ERP系统?对公司管理和业务增长都太重要了

什么是ERP系统&#xff1f; ERP&#xff08;Enterprise Resource Planning&#xff0c;企业资源计划&#xff09;系统是一种应用软件&#xff0c;它通过集成管理企业内部系统和外部合作伙伴系统的各种业务过程&#xff0c;来实现企业资源的最优化配置和利用。ERP系统涵盖了企业…

VMware vSphere 8.0 Update 1a 正式版发布 - 企业级工作负载平台

VMware vSphere 8.0 Update 1a 正式版发布 - 企业级工作负载平台 ESXi 8.0 U1 & vCenter Server 8.0 U1 请访问原文链接&#xff1a;https://sysin.org/blog/vmware-vsphere-8-u1/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sy…

基于java SpringBoot和Vue uniapp的校园信息交流小程序

随着信息社会的网络化和计算机科学的广泛普及和迅速普及应用&#xff0c;具有综合智能的我国校园信息教育网络已成为推动中小学科学教育及其实践科学发展的信息技术手段。迅速推进了信息化改革&#xff0c;改善了高校信息交流的网络环境&#xff0c;提高了信息教育平台的管理水…

利用云服务器搭建云盘(搭建自己的在线存储可上传下载可共享)

Docker部署seafile 背景 由于学校最近有一个需求&#xff0c;搭建一个可供老师使用的在线存储&#xff0c;最后我自己就尝试这搭建。这过程中也出现了不少问题&#xff0c;下面我会说明&#xff01;&#xff01;&#xff01; 准备 需要一台云服务器&#xff08;如果你本地有…

chatgpt赋能python:Python写POC:提高网络安全攻防技能的利器

Python写POC&#xff1a;提高网络安全攻防技能的利器 随着信息化进程的发展&#xff0c;计算机网络的应用越来越广泛&#xff0c;网络安全问题也日益突出。针对网络安全问题的POC&#xff08;Proof Of Concept&#xff0c;概念验证代码&#xff09;作为一种低成本的、快速验证…

chatgpt赋能python:Python冒泡排序法详解

Python冒泡排序法详解 介绍 Python是一种高级编程语言&#xff0c;它设计简洁、易于学习&#xff0c;受到越来越多程序员的欢迎。 在Python编程中&#xff0c;排序算法是非常重要的一部分。其中&#xff0c;冒泡排序法是一种纯粹的比较排序算法&#xff0c;它是大多数排序算…

元宇宙应用领域-运动

元宇宙作为互联网的下一个阶段&#xff0c;目前已经发展成为一个多领域的“平行宇宙”&#xff0c;其中就包括体育。从体育的角度来看&#xff0c;元宇宙将是一个集运动、娱乐、社交、生活、学习于一体的“平行宇宙”&#xff0c;可以让人们在元宇宙中进行更好的运动&#xff0…

ChatGPT下的网站建设会收到哪些影响?

近日&#xff0c;微软发布了人工智能语言模型 ChatGPT&#xff0c;该模型可以理解人类的语言并生成响应式文本。与其他自然语言处理模型不同&#xff0c; ChatGPT具有出色的语言理解能力&#xff0c;并能够生成自然、流畅的文本。 ChatGPT不仅能够回答用户问题&#xff0c;还能…

有关计算机科学与技术论文

有关计算机科学与技术论文篇一 《 计算方法在计算机科学与技术专业教学改革与实践 》 摘要&#xff1a;介绍了对计算机科学与技术专业的计算方法课程教学改革进行的尝试和探索&#xff0c;结合该专业提出了计算方法课程教学改革的几个重点及策略&#xff0c;优化了教学内容、…

CUDA编程中的HANDLE_ERROR( )和book.h-2023

最近个人正在学习cuda编程&#xff0c;这个帖子作为一个经验记录。 第一呢&#xff0c;这本书里面很明显面对的是一些有编程基础的同学准备的&#xff0c;因此他很多细节都是跳过&#xff0c;这就给我们一些初学者带来了困扰。 个人读下来&#xff0c;建议这个文章可以作为参…

T5的整体介绍【代码实战】

T5的整体介绍【代码实战】 0、前言1.Header2.summary3 T5 model3.1 forward3.2 预训练任务3.2.1 multi sentence pairs 3.3 完成 tasks 0、前言 本文是对T5预训练模型的一个介绍&#xff0c;以及能够用来做任务测试&#xff0c;完整的代码稍后挂上链接。 1.Header import torc…

地震勘探基础(四)之地震干扰波

地震记录的干扰波 如下图所示&#xff0c;图上有坏道&#xff0c;面波这样的干扰波。 什么是有效波和干扰波&#xff1f; 有效波&#xff08;Signal&#xff09;&#xff1a;可用来解决所提出的地质任务的波。干扰波&#xff08;Noise&#xff09;&#xff1a;所有妨碍辨认…

于Python的分布式多主题网络爬虫的研究与设计

本文旨在研究和设计一种基于Python的分布式多主题网络爬虫&#xff0c;以实现高效、快速、准确地获取互联网上的信息资源。 一、研究背景 随着互联网的快速发展&#xff0c;信息资源的数量和种类不断增加&#xff0c;如何高效地获取和利用这些信息资源成为了一个重要的问题。…

MySQL 恢复误删数据

文章目录 1、查看是否启用 binlog 日志2、查看所有 binlog 日志3、查看正在使用的日志4、查找日志所在文件夹5、log 日志转 sql6、delete 转 insert 恢复误删 MySQL 恢复误删数据&#xff0c;针对 window 和 Linux 均适用&#xff0c;只需要找到对应的 binlog 目录文件&#xf…