自动开启主机+连接校园网

写在前面
在工作室有个台式机,我想要晚上在寝室的时候也能够远程控制我的台式机。
但是远程控制需要连接网络,但是我工作室只有校园网,我必须让我的台式机自动开机后,还要自动连接到校园网。
于是我的尝试就开始了
自动开启主机
他的做法是:小米智能远程控制插座 + 主机BLOS设置来电自启动 + 远程控制软件
但是他的台式机和智能家居可以实时连接到网络,但是我的不能,我登网都是一个问题
我看到网上还有:
- RTC(Real-Time Clock,实时时钟)唤醒是一种通过计算机的实时时钟来定时唤醒计算机的方式。RTC 是计算机系统中一个独立的硬件部件,用于跟踪时间,并在计算机关闭或处于低功耗模式时仍然保持运行。
- PCI-E设备唤醒指的是通过PCI Express(PCI-E)总线上的设备发送唤醒信号来唤醒计算机系统。
- WOL(Wake-on-LAN,网络唤醒)是一种通过局域网上的网络数据包来唤醒计算机的技术。即使电脑处于关机或睡眠状态,只要网络唤醒功能被启用,计算机就可以被远程唤醒。
RTC是唯一可行的方法,因为我的台式机没有插入网线,与整个网络是断开的,PCI-E和WOL就自然不行了
RTC还有个问题工作室每晚会全面断电,这个时候台式机的供电都不能保障,不知道RTC是否还能正常运转...
看到这里本来应该放弃,但是在我写这篇博客之前还没有意识到我连电脑自动开机都做不到,所以我对自动连接校园网也研究了下,顺便记录下吧
自动连接校园网
我的校园网非常阴间,他要手动点击后,不知道中间发生了什么,然后会先连上网

但是他不让你访问网络,但是可以访问他的验证网站,输入学号密码后才能够正式访问网络
即WLAN 网络需要输入用户名和密码,并且该信息是通过网页形式进行输入的,通常是因为你连接的是一个需要认证的网络,比如需要输入用户名和密码的公共 Wi-Fi 网络或企业网络。
导致我写python脚本自动登入非常困难,因为我直接脚本输入我校园网的自动登入网站是访问不到的
开机启动程序设置
我遇到的问题有:
-
selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element:
即自动化浏览器工具有问题了,好像是Could be a race condition where the find element is executing before it is present on the page.
我用的解决方法:

-
使用命令行模式(cmd)进入pycharm所创建的虚拟环境
因为我自动控制浏览器的库安装在pycharm的虚拟环境上,没有了这个虚拟我如何活呀 -
在Windows中:
-
编辑Python脚本:确保Python脚本可执行,并包含正确的shebang。
-
将Python脚本放置在合适的位置:将Python脚本放置在一个合适的位置,例如
C:\Scripts\your_script.py。 -
创建启动批处理文件:创建一个批处理文件(例如
start_my_script.bat),内容如下:@echo off python C:\Scripts\your_script.py -
将批处理文件放置在启动目录中:将批处理文件放置在以下其中一个目录中之一:
C:\Users\YourUsername\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\StartupC:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
我是放在C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp下的

然后批处理脚本LoginWiFi为:
cd C:\MyScript\venv\Scripts //进入pycharm虚拟环境用的
call activate //激活虚拟环境,没想到activate是一个bat文件
start python C:\MyScript\Login.py //调用我写的python浏览器自动化脚本,实现自动登录
pause //为了检查状态用的
python脚本为:
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import Select
chrome_driver_path = r'C:\Program Files\Google\Chrome\Application\chrome.exe'
url = "http://172.17.1.2/"
def Login():
# 打开主页
driver = webdriver.Chrome()
driver.get(url)
# 定位用户名和密码输入框,并输入相应的值
username_input = driver.find_element(By.ID, "username") # 假设用户名输入框的id为username
username_input.send_keys("xxx")
password_input = driver.find_element(By.ID, "password") # 假设密码输入框的id为password
password_input.send_keys("xxx")
dropdown = Select(driver.find_element(By.ID, "domain")) # 假设下拉框的id为domain
dropdown.select_by_visible_text("电信校园宽带") # 根据选项的可见文本来选择选项
# 点击登录按钮
login_button = driver.find_element(By.ID, "login-account") # 假设登录按钮的id为login_button
login_button.click()
# 等待登录完成,可以根据登录后页面的特定元素来等待
try:
WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "self-service"))
)
driver.quit()
return True
except:
driver.quit()
return False
for i in range(10):
ans = Login()
if ans:
break
else:
sleep(2)
但是,如上面所说,我直接访问是连接不到的,这是个问题。
解决方法
使用 Windows 命令行工具来自动连接到 WLAN 网络 ,netsh 命令来实现这一点。
netsh wlan connect name="YourWiFiNetwork"
在这个命令中,YourWiFiNetwork 应该替换为你要连接的 WLAN 网络的名称(SSID)。执行此命令后,Windows 将尝试连接到指定的 WLAN 网络。
于是更改后的bat文件为:
netsh wlan connect name="jxnu_stu" //为了先连上内网
cd C:\MyScript\venv\Scripts
call activate
start python C:\MyScript\Login.py
pause
python代码为:
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import Select
chrome_driver_path = r'C:\Program Files\Google\Chrome\Application\chrome.exe'
url = "http://172.17.1.2/"
def Login():
# 打开主页
driver = webdriver.Chrome()
driver.get(url)
try:
WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "username"))
)
# 定位用户名和密码输入框,并输入相应的值
username_input = driver.find_element(By.ID, "username") # 假设用户名输入框的id为username
username_input.send_keys("xxx")
password_input = driver.find_element(By.ID, "password") # 假设密码输入框的id为password
password_input.send_keys("xxx")
dropdown = Select(driver.find_element(By.ID, "domain")) # 假设下拉框的id为domain
dropdown.select_by_visible_text("电信校园宽带") # 根据选项的可见文本来选择选项
sleep(1)
# 点击登录按钮
login_button = driver.find_element(By.ID, "login-account") # 假设登录按钮的id为login_button
login_button.click()
sleep(2)
finally:
try:
WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "logout"))
)
driver.quit()
return True
except:
driver.quit()
return False
sleep(5)
while True:
if Login():
break
sleep(1)
免密登入
有个问题,我的程序在开机时,登进去要我输入我的密码,我不输入就不执行我的脚本!真离谱啊
即是是在计算机管理中进行如下设置:


也是没有用的,真离谱啊
去除登入时去除密码:操作系统 - 技巧 - Windows11 开机登录不再输入密码
parsec 远程控制电脑
出现Parsec 错误6023...
又又又是校园网的问题...

浙公网安备 33010602011771号