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

image

from pixiv

写在前面

在工作室有个台式机,我想要晚上在寝室的时候也能够远程控制我的台式机。

但是远程控制需要连接网络,但是我工作室只有校园网,我必须让我的台式机自动开机后,还要自动连接到校园网。

于是我的尝试就开始了

自动开启主机

视频:[教程]如何把你的台式机变成云电脑

他的做法是:小米智能远程控制插座 + 主机BLOS设置来电自启动 + 远程控制软件

但是他的台式机和智能家居可以实时连接到网络,但是我的不能,我登网都是一个问题

我看到网上还有:

  • RTC(Real-Time Clock,实时时钟)唤醒是一种通过计算机的实时时钟来定时唤醒计算机的方式。RTC 是计算机系统中一个独立的硬件部件,用于跟踪时间,并在计算机关闭或处于低功耗模式时仍然保持运行。
  • PCI-E设备唤醒指的是通过PCI Express(PCI-E)总线上的设备发送唤醒信号来唤醒计算机系统。
  • WOL(Wake-on-LAN,网络唤醒)是一种通过局域网上的网络数据包来唤醒计算机的技术。即使电脑处于关机或睡眠状态,只要网络唤醒功能被启用,计算机就可以被远程唤醒。

RTC是唯一可行的方法,因为我的台式机没有插入网线,与整个网络是断开的,PCI-E和WOL就自然不行了

RTC还有个问题工作室每晚会全面断电,这个时候台式机的供电都不能保障,不知道RTC是否还能正常运转...

看到这里本来应该放弃,但是在我写这篇博客之前还没有意识到我连电脑自动开机都做不到,所以我对自动连接校园网也研究了下,顺便记录下吧

自动连接校园网

我的校园网非常阴间,他要手动点击后,不知道中间发生了什么,然后会先连上网

image

但是他不让你访问网络,但是可以访问他的验证网站,输入学号密码后才能够正式访问网络

即WLAN 网络需要输入用户名和密码,并且该信息是通过网页形式进行输入的,通常是因为你连接的是一个需要认证的网络,比如需要输入用户名和密码的公共 Wi-Fi 网络或企业网络。

导致我写python脚本自动登入非常困难,因为我直接脚本输入我校园网的自动登入网站是访问不到的

开机启动程序设置

我遇到的问题有:

  1. 编辑Python脚本:确保Python脚本可执行,并包含正确的shebang。

  2. 将Python脚本放置在合适的位置:将Python脚本放置在一个合适的位置,例如C:\Scripts\your_script.py

  3. 创建启动批处理文件:创建一个批处理文件(例如start_my_script.bat),内容如下:

    @echo off
    python C:\Scripts\your_script.py
    
  4. 将批处理文件放置在启动目录中:将批处理文件放置在以下其中一个目录中之一:

    • C:\Users\YourUsername\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
    • C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp

我是放在C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp下的

image

然后批处理脚本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)

免密登入

有个问题,我的程序在开机时,登进去要我输入我的密码,我不输入就不执行我的脚本!真离谱啊

即是是在计算机管理中进行如下设置:

image

image

也是没有用的,真离谱啊

去除登入时去除密码:操作系统 - 技巧 - Windows11 开机登录不再输入密码

parsec 远程控制电脑

出现Parsec 错误6023...

Parsec 错误6023 通过其他工具解决思路

又又又是校园网的问题...

posted @ 2024-04-01 15:31  次林梦叶  阅读(470)  评论(0)    收藏  举报