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

Posted

技术标签:

【中文标题】使用 Python 将我的 Windows 计算机与 wifi AP 相关联【英文标题】:Associating my Windows computer to a wifi AP with Python 【发布时间】:2012-12-14 05:02:46 【问题描述】:

我正在尝试编写一个 python 脚本,它可以使我的计算机与无线接入点相关联,并将名称作为字符串。例如,我可能会指定我想连接到linksys,我的脚本会导致计算机这样做。

我查看了this 问题,但通过查看提供的链接无法理解该怎么做。

有人能指出正确的方向吗?

【问题讨论】:

您的意思是连接到无线网络吗? @FarukSahin:是的,抱歉,我就是这个意思。我将编辑问题。 【参考方案1】:

我决定采纳 Paulo 的建议并尝试使用 Powershell/命令行。我找到了一个关于通过命令行连接到网络的article。

从命令行,你可以:

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

...name=&lt;ssid-name&gt; 部分是可选的,并且仅当配置文件包含多个 ssid 时才必需。

但是,该配置文件似乎必须已经存在于计算机上,才能使命令行内容正常工作。我确实找到了关于以编程方式创建个人资料的 forum post,但我不想通过它进行拉票。

如果配置文件名称已经存在,那么您可以从 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        

这是一个不完美的解决方案,我不完全确定它是否适用于所有情况,但它确实适用于我的特定情况。我想我会发布我想出的东西,以防其他人想尝试修改它以使其更好。

【讨论】:

请注意subprocess.call()subprocess.communicate() 更容易...另请参阅This answer【参考方案2】:

您链接的答案谈到从 Windows API 调用低级 C 函数。摆弄低级的东西会伤脑筋。

有a .Net wrapper around the native C calls,您可以直接从IronPython 使用这个更高级别的API。不幸的是,它没有很好的文档记录,但是查看 C# 示例并挖掘源代码应该比调用底层 API 更容易。这是一个非常以 Windows 为中心的解决方案,所以你可能会更好served by powershell。

【讨论】:

【参考方案3】:

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

https://github.com/changyuheng/pywinwifi

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

https://github.com/reedcourty/pynetsh

【讨论】:

以上是关于使用 Python 将我的 Windows 计算机与 wifi AP 相关联的主要内容,如果未能解决你的问题,请参考以下文章

使用 Jython 将我的 Python 脚本作为 JAR 文件分发?

如何使用 Windows 将我的 Django 项目连接到 MySql?

使用 Windows 身份验证将我的 Sql Server 2008 数据库连接到我的 Java 项目

如何使用 Wifi Direct 将我的 Windows 10 PC 连接到我的 Raspberry Pi 3?

如何将我的IP通知给我网络中的其他设备

Windows:如何将我的 PostgreSQL 用户设置为超级用户?