资讯 小学 初中 高中 语言 会计职称 学历提升 法考 计算机考试 医护考试 建工考试 教育百科
栏目分类:
子分类:
返回
空麓网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
空麓网 > 计算机考试 > 软件开发 > 后端开发 > Python

Linux服务器登录校园网方法——使用python3,selenium,chromium,chromium-driver。

Python 更新时间: 发布时间: 计算机考试归档 最新发布

Linux服务器登录校园网方法——使用python3,selenium,chromium,chromium-driver。

写在前面:

        大约两个月以前,我入手了一块Linux开发板,香橙派;板子刚到手,很开心,又有新玩具了;但是怎么让这玩意儿登录上校园网,属实让我头疼了,我在网上找到了通过wget发送数据包的方法来登录校园网,但是个方法在我的学校行不通;于是我去找“校园网管理中心”的人对线,得到的却是“你不会开热点吗?”这个及其下头的回答。。。。。。

        所以,我觉定自己动手,丰衣足食。

        我选择了一个比较“笨”的做法,其实现原理基本和正常登录网页靠手点和键盘输入一样,虽然短时间的性能开销是比较大的,但是经过我一个多月的使用,没有出过问题,其可靠性还是比较高的。

接下来,我们统一一下软件:

1.系统:Debian,我是用的是Debian,Linux系统大差不差。

2.网络管理软件是:Network Manager

sudo apt install network-manager

3.Python3和pip:不会有人Linux上不装python吧?

Debian & Ubuntu:

sudo apt updatesudo apt install python3 pip

如果下载慢,请自行搜索linux换源

4.selenium:Python插件,用于控制浏览器

pip install selenium

如果下载慢,请自行搜索pip换源

5.chromium和chromium-driver:

sudo apt install chromium chromium-driver

软件要求就是这些。

Python脚本:

直接上代码:

import osimport timeimport datetimefrom selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.select import Selectfrom selenium.webdriver.chrome.options import Options# 使用系统命令写入日志时间os.system("date >> /root/Mylogs/Services.log")# 打开日志文件log = open("/root/Mylogs/Services.log", 'a')# 设置chrome参数option = Options()option.add_argument('--headless')option.add_argument('--disable-gpu')option.add_argument('--no-sandbox')# 获取当前时间ntime = datetime.datetime.now()# 校园网登录URLLoginPageUrl = "http://10.51.3.40/srun_portal_pc?ac_id=2&theme=basic1"# 网络运营商 "@cmcc":移动 "@cuc":联通 "@dianxin":电信 "@jifang":机房 "@studentfree":爱心免费网络 "@teacher":办公NetType = "@cmcc"# 账号account = "202110701530011"# 密码password = "233332"# ConnectTest 通过nmcli命令返回值,获取有没有连接校园网def CntTest() : return os.system('nmcli dev | grep "JHC-WLAN"')# Ping测试获取有无网络def PingTest() : return os.system("ping -c 2 -w 3 baidu.com") # 要求两个数据包,限时3秒# 连接 JHC-WLANdef CntWifi() :	# 日志写入 “校园WiFi没有连接,连接校园网”	log.write("Connecting JHC-WLANn")	# 使用系统命令连接校园网	os.system("nmcli device wifi connect JHC-WLAN password 12345678")# 登录这个愚蠢的校园网def LoginSBXYW() :	# 日志写入 “校园网没有登录,登录校园网”	log.write("Logging into SBXYWn")	# 打开登录校园网界面	driver = webdriver.Chrome(options=option)	driver.get(LoginPageUrl)	time.sleep(5)	# 输入账号	driver.find_element(By.XPATH, '//*[@id="username"]').send_keys(account)	# 下拉框选择 “移动”	elem = driver.find_element(By.XPATH, '//*[@id="domain"]')	Select(elem).select_by_value(NetType)	# 输入密码	driver.find_element(By.XPATH, '//*[@id="password"]').send_keys(password)	# 点击登录	driver.find_element(By.XPATH, '//*[@id="login-account"]').click()	# 给浏览器时间反应一会儿	time.sleep(2)# TryConnectNet 尝试连接网络def tryCntNet() :	# 如果没有连接校园WiFi	if CntTest() != 0 :		# 日志写入 “校园WiFi未连接”		log.write("JHC-WLAN not connectedn")		# 连接校园WiFi		CntWifi()		# 如果已经连接校园WiFi之后依然没网络,则尝试登录校园网		if PingTest() != 0 :			# 日志写入 “SB校园网没有登录”			log.write("SBXYW not loggedn")			# 登录SB校园网			LoginSBXYW()		# 说明已经有网络了,直接返回 int 0		else : return 0	# 校园WiFi已经连接,尝试登录校园网	else : LoginSBXYW()	# 返回Ping测试值	return PingTest()if __name__ == '__main__' :	# 在早上6点开始,执行网络检测	if ntime.hour >= 6 :		# 用于存储尝试连接网络的返回值		rtword_fromTry = 0		# 如果Ping测试没有通过,说明没有网络		if PingTest() != 0 :			# 日志写入 “Ping测试没有通过”			log.write("PingTest NOT PASSn")			# 尝试连接网络并存入返回值			rtword_fromTry = tryCntNet()		else :			# 有网			log.write("PingTest OKayn")		# 如果尝试连接网络的返回值不为0,说明网络连接失败,写入日志之后退出程序		if rtword_fromTry != 0 :			# 联网失败			log.write("Failedn")	# 如果不是早上6点,晚安~	else :		log.write("Nighty night~~~n")# 关闭日志log.close()

本Python脚本的注释就算是讲解,登录的校园网是以JHC为例的,脚本的部分内容因学校而异,JHC的同学在软件相同的情况下几乎可以照搬,非JHC的同学,注意修改LoginSBXYW()中通过XPATH找到对应网页元素,并操作数据的代码,关于如何通过XPATH找到对应网页元素,很简单的,自己网上找一下吧。。。。。。代码里的时间判断和日志写入,主要用于crontab自动化,可以直接忽略这个部分。

写在最后:

本人并没有专心学过Python,老师教的Python知识也是非常基础的,完全不够写这个脚本用,所以,我是现学现做的这个Python脚本,如果有什么代码上的问题,欢迎直接喷我;JHC用的校园网管理系统是深澜,如果你有更好的登录校园网的方法,也欢迎直接砸我脸上。

补充:

我发现日志写入(文件读写),在函数内似乎没有产生效果,原来是在有返回值(或者以return结束)的函数内没有生效,也就是那块内存在返回时就被“释放”了,这。。。。。。

转载请注明:文章转载自 http://www.konglu.com/
本文地址:http://www.konglu.com/it/1097066.html
免责声明:

我们致力于保护作者版权,注重分享,被刊用文章【Linux服务器登录校园网方法——使用python3,selenium,chromium,chromium-driver。】因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2023 成都空麓科技有限公司

ICP备案号:蜀ICP备2023000828号-2