8

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

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

有人可以指出我正确的方向吗?

4

3 回答 3

5

我决定采纳 Paulo 的建议并尝试使用 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        

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

于 2012-12-29T07:09:07.900 回答
1

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

一个围绕原生 C 调用的 .Net 包装器,您可以直接从IronPython使用这个更高级别的 API 。不幸的是,它没有很好的文档记录,但是查看 C# 示例并挖掘源代码应该比调用底层 API 更容易。这是一个非常以 Windows 为中心的解决方案,因此powershell可能会更好地为您服务。

于 2012-12-29T03:43:47.393 回答
0

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

https://github.com/changyuheng/pywinwifi

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

https://github.com/reedcourty/pynetsh

于 2018-03-20T18:58:50.327 回答