使用 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=<ssid-name>
部分是可选的,并且仅当配置文件包含多个 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 项目