shell脚本登录dlut-lingshui并设置开机连网和断网重连

本文提供了一个用于无图形界面linux系统自动连接dlut-lingshui校园网的shell脚本,并提供了设置开机联网以及断网重连的详细操作步骤。本文的操作在ubuntu 22.04系统上验证有效,在其他版本的linux系统上操作时遇到问题可以自行百度。

1. 获取校园网认证界面的用户名和密码

校园网认证账号是自己的学号,认证密码是加密后的256位密文,我们可以通过运行下面的python脚本获取密文。

1.1 获取密码步骤

未联网(如果已联网请先下线)的机器上,将下面这段python代码中的password替换为你自己的密码明文,保存运行后得到密文。

import math
import requestspassword = '你的密码明文'
e = '010001'
m = '94dd2a8675fb779e6b9f7103698634cd400f27a154afa67af6166a43fc26417222a79506d34cacc7641946abda1785b7acf9910ad6a0978c91ec84d40b71d2891379af19ffb333e7517e390bd26ac312fe940c340466b4a5d4af1d65c3b5944078f96a1a51a5a53e4bc302818b7c9f63c4a1b07bd7d874cef1c3d4b2f5eb7871'
url_index = 'http://123.123.123.123/'
user_agent = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'm = int.from_bytes(bytearray.fromhex(m), byteorder='big')
e = int.from_bytes(bytearray.fromhex(e), byteorder='big')
login_page_url = requests.get(url_index).text.split('\'')[1]
query_string = login_page_url.split('?')[1]query_list = query_string.split('&')
for i in query_list:query_item = i.split('=')if query_item[0] == 'mac':mac = query_item[1]plaintext = password + '>' + mac
plaintext = plaintext.encode('utf-8')input_nr = int.from_bytes(plaintext, byteorder='big')
crypted_nr = pow(input_nr, e, m)
keylength = math.ceil(m.bit_length() / 8)
crypted_data = crypted_nr.to_bytes(keylength, byteorder='big')
print(crypted_data.hex())

2. 将账号密码填入shell脚本并保存

将下面这段bash代码中的账号密码替换为你自己的学号和密码密文后保存,并记住保存的路径。

本文保存的路径如下,请把后文中所有出现的此路径替换为你自己的路径
/home/ubuntun/system_script/dlut_network.sh

#!/bin/bash
captive_server='http://www.google.cn/generate_204'
url_index='http://123.123.123.123/'
user_agent='Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'id="这里输入账号"
passwd="这里输入密文"login() {login_page_url=$(curl -s "${url_index}" | grep -o '<script>[^<]*</script>' | sed -e "s/<script>\(.*\)<\/script>/\1/" | grep -o "'.*'" | sed -e "s/'//g")login_url=$(echo ${login_page_url} | awk -F \? '{print $1}')login_url="${login_url/index.jsp/InterFace.do?method=login}"query_string=$(echo ${login_page_url} | awk -F \? '{print $2}')query_string="${query_string//&/%26}"query_string="${query_string//=/%3D}"login_post_data="userId=$1&password=$2&service=&queryString=${query_string}&operatorPwd=&operatorUserId=&validcode=&passwordEncrypt=true"if [ -n "${login_url}" ]; thenauth_result=$(curl -d "${login_post_data}" -H "Accept: */*" -H "Accept-Encoding: gzip, deflate" -H "Accept-Language: zh-CN,zh\;q=0.9" -H "Proxy-Connection: keep-alive" -H "Referer: ${login_url}" -H "User-Agent: ${user_agent}" "${login_url}")# echo "${auth_result}"fi
}for ((i=0; i<5; i++)) #5次获取code,获取失败说明网络不通
docode=$(curl -I ${captive_server} -s | grep "HTTP/1.1" | awk '{print $2}')if [ -z "${code}" ]; thensleep 2selsebreakfi
done
if [ -z "${code}" ]; thenecho 连接失败,请检查:$'\n'1. 校园网是否正常/是否插好网线$'\n'2. 电脑代理是否正确设置(可以尝试关闭代理)exit 1;
fi
for ((i=0; i<5; i++)) #5次连接校园网,连接失败说明账号密码不对或此脚本已失效
doif [ "${code}" = "200" ]; thenecho${i}次尝试连接login ${id} ${passwd}elif [ "${code}" = "204" ]; thenecho 连接成功exit 0;fisleep 2scode=$(curl -I ${captive_server} -s | grep "HTTP/1.1" | awk '{print $2}')
done
echo 连接失败,请检查用户信息是否正确

3. 为脚本赋予权限

chmod +x /home/ubuntun/system_script/dlut_network.sh

4. 设置开机自动联网&断网自动重连

本文借助crontab工具实现开机自动联网和断网自动重连,crontab的用法可以自行百度。
以下是配置过程:

  1. 安装curl(需要连网才能安装)
sudo apt install curl
  1. 命令行输入crontab -e,向打开的文件追加以下两行(注意修改路径)并保存
@reboot export PATH=/usr/bin:/bin:/usr/local/bin && /home/ubuntun/system_script/dlut_network.sh
*/10 * * * * export PATH=/usr/bin:/bin:/usr/local/bin && /home/ubuntun/system_script/dlut_network.sh

第一行代表开机时运行一次脚本(开机启动)
第二行代表每隔十分钟运行一次脚本(每十分钟检查网络,断网重连)

Q&A:

Q: python脚本中的e和m是怎么获得的,需要修改吗?
A: 这两个变量是rsa加密需要的,一般不需要修改。如果脚本失效,可以尝试通过开发者工具获取认证界面信息(method=pageInfo)

Q: 设置了crontab后脚本依然不生效,我该如何调试?
A: 可以从以下几个方面逐一排查:

  1. 检查cron服务是否正常 service cron status
  2. 检查脚本权限设置是否正常
  3. 将程序运行的输出信息保存在日志中进一步分析。
    要把程序返回信息输出到某个文件中,只需在crontab的计划任务后面追加 >> /path/to/your/logfile.log 2>&1,例如:
@reboot export PATH=/usr/bin:/bin:/usr/local/bin && /home/ubuntun/system_script/dlut_network.sh >> /home/ubuntun/system_script/aaa.log 2>&1
*/10 * * * * export PATH=/usr/bin:/bin:/usr/local/bin && /home/ubuntun/system_script/dlut_network.sh >> /home/ubuntun/system_script/bbb.log 2>&1

Q: 为什么我可以使用curl,但脚本日志输出却提示我curl不存在?
A: 如果你使用了anaconda或其他虚拟环境管理器,并默认激活了base环境,那你使用的curl很有可能是虚拟环境中的,这种情况下有两种解决办法。
为什么我可以使用curl,但脚本日志输出却提示我curl不存在?
一种解决方法 是使用which curl查看当前curl的路径,并export这个路径:

crontab -e
#在PATH后添加这个路径,用冒号分隔
*/10 * * * * export PATH=/usr/bin:/bin:/usr/local/bin:/home/ubuntun/anaconda3/bin && /home/ubuntun/system_script/dlut_network.sh >> /home/ubuntun/system_script/bbb.log 2>&1

(推荐)另一种解决方法 是在系统安装curl(会自动安装在/usr/bin路径下):

sudo apt install curl

Q: */10 * * * * 是什么意思?
A: 请自行百度crontab的使用方法

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端回显分类 回显有时显示键值(判断条件:看是否有值传入)

<div v-if"form.caseType 1"><p class"title-submit" style"margin-top: 0">案源提供人信息</p><el-row v-for"(item, index) in form.superviseList" :key"index"><el-col :span"8"…

拼接url - 华为OD统一考试

OD统一考试 分值&#xff1a; 100分 题解&#xff1a; Java / Python / C 题目描述 给定一个 url 前缀和 url 后缀, 通过 “,” 分割&#xff0c; 需要将其连接为一个完整的 url 。 如果前缀结尾和后缀开头都没有 /&#xff0c;需要自动补上 / 连接符&#xff1b; 如果前缀结…

大型电商系统商城源码_架构_订单系统_OctShop

中国的电商差不多发展到今天已经有20多年的历史啦&#xff0c;特别是过去的10年里其发展速度与竞争是相当的激烈&#xff0c;发展出了各种各样的模式如&#xff1a;B2B、B2C、B2B2C、O2O、社交电商等等。对于广大的企业或商家来说&#xff0c;电商是一个不可或缺的销售渠道&…

二分查找|详细讲解|两种写法

二分查找 目录 1 介绍2 例题引入3 “左闭右闭”写法4 “左闭右开”写法 1 介绍 二分查找适用于从一个递增或递减的有序数列中查找某一个值 因此&#xff0c;使用二分查找的条件是&#xff1a; 用于查找的内容从逻辑上来看是有序的查找的数量只能是一个而不是多个 在二分查…

【每日一题】5.LeetCode——环形链表

&#x1f4da;博客主页&#xff1a;爱敲代码的小杨. ✨专栏&#xff1a;《Java SE语法》 ❤️感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;&#xff0c;您的三连就是我持续更新的动力❤️ &#x1f64f;小杨水平有限&#xff0c;欢迎各位大佬指点&…

c语言实战之贪吃蛇

文章目录 前言效果展示游戏用到的图片游戏思路一览游戏前准备一、贪吃蛇、食物、障碍物节点坐标的结构体二、枚举游戏状态、和贪吃蛇的方向三、维护运行的结构体 游戏开始前的初始化一、学习图形库相关知识二、设置背景三、欢迎界面四、初始化贪吃蛇五、生成障碍物六、生成食物…

【JaveWeb教程】(35)SpringBootWeb案例之《智能学习辅助系统》登录功能的详细实现步骤与代码示例(8)

目录 案例-登录和认证1. 登录功能1.1 需求1.2 接口文档1.3 思路分析1.4 功能开发1.5 测试 案例-登录和认证 在前面的课程中&#xff0c;我们已经实现了部门管理、员工管理的基本功能&#xff0c;但是大家会发现&#xff0c;我们并没有登录&#xff0c;就直接访问到了Tlias智能…

CMake 完整入门教程(一)

1 前言 每一次学习新东西都是很有乐趣的&#xff0c;虽然刚开始会花费时间用来学习&#xff0c;但是实践证明&#xff0c;虽然学习新东西可能会花费一些时间&#xff0c;但是它们带来的好处会远远超过这些花费的时间。学习新东西是值得的&#xff0c;也是很有乐趣的。 网络上…

如何搭建Nextcloud云存储网盘并实现无公网ip访问本地文件【内网穿透】

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

如何实现无公网ip远程SSH连接家中本地的树莓派

文章目录 如何通过 SSH 连接到树莓派步骤1. 在 Raspberry Pi 上启用 SSH步骤2. 查找树莓派的 IP 地址步骤3. SSH 到你的树莓派步骤 4. 在任何地点访问家中的树莓派4.1 安装 Cpolar4.2 cpolar进行token认证4.3 配置cpolar服务开机自启动4.4 查看映射到公网的隧道地址4.5 ssh公网…

免费分享一套微信小程序外卖跑腿点餐(订餐)系统(uni-app+SpringBoot后端+Vue管理端技术实现) ,帅呆了~~

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的微信小程序外卖跑腿点餐(订餐)系统(uni-appSpringBoot后端Vue管理端技术实现) &#xff0c;分享下哈。 项目视频演示 【免费】微信小程序外卖跑腿点餐(订餐)系统(uni-appSpringBoot后端Vue管理端技术实现)…

全能相似度计算与语义匹配搜索工具包,多维度实现多种算法,涵盖文本、图像等领域。支持文图搜索,满足您在不同场景下的搜索需求

全能相似度计算与语义匹配搜索工具包,多维度实现多种算法,涵盖文本、图像等领域。支持文图搜索,满足您在不同场景下的搜索需求。 Similarities:精准相似度计算与语义匹配搜索工具包,多维度实现多种算法,覆盖文本、图像等领域,支持文搜、图搜文、图搜图匹配搜索 Similar…