使用Python将我的Windows计算机与wifi AP关联



我正在尝试编写一个python脚本,可以使我的计算机与无线接入点相关联,给定名称作为字符串。例如,我可能指定要连接到linksys,然后我的脚本将使计算机执行此操作。

我看了这个问题,但是不能从提供的链接中理解该怎么做。

谁能给我指个正确的方向?

我决定采纳保罗的建议,尝试使用Powershell/命令行。我找到了一篇关于通过命令行连接到网络的文章。

从命令行,您可以这样做:

netsh wlan connect <profile-name> [name=<ssid-name>]

…其中name=<ssid-name>部分是可选的,只有当配置文件包含多个ssid时才需要。

然而,为了使命令行工作,看起来概要文件必须已经存在于机器上。我确实在论坛上找到了一个关于程序化创建个人资料的帖子,但我不想仔细研究它。

如果配置文件名称已经存在,那么可以从Python执行如下操作:

import subprocess
def connect_to_network(name):
    process = subprocess.Popen(
        'netsh wlan connect {0}'.format(name),
        shell=True,
        stdout=subprocess.PIPE,
        stderr=subprocess.PIPE)
    stdout, stderr = process.communicate()
    # Return `True` if we were able to successfully connect
    return 'Connection request was completed successfully' in stdout        

这是一个不完美的解决方案,我不完全确定它是否适用于所有情况,但它确实适用于我的特殊情况。我想我应该把我的想法贴出来,以防有人想尝试修改它,让它变得更好。

你链接的答案是关于从Windows API调用低级C函数。摆弄低级别的东西会让我的大脑受伤。

有一个。net包装器围绕本机C调用,你可以直接从IronPython使用这个更高级别的API。不幸的是,它没有很好的文档,但是查看c#示例并挖掘源代码应该比调用底层API更容易。这是一个非常以windows为中心的解决方案,因此powershell可能更适合您。

我编写了一个Python CLI工具,用于通过命令行界面控制Wi-Fi。这个项目有一个库,应该能满足你的要求。

https://github.com/changyuheng/pywinwifi

有另一个独立的库,但我从来没有尝试过。

https://github.com/reedcourty/pynetsh

最新更新