首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在接口上获取活动的ESSID?

如何在接口上获取活动的ESSID?
EN

Stack Overflow用户
提问于 2013-01-03 23:34:05
回答 1查看 594关注 0票数 1

我希望在仅使用Python标准库的接口上获得活动的ESSID;我只需要支持Linux环境。我该怎么做呢?

EN

回答 1

Stack Overflow用户

发布于 2013-01-03 23:34:05

这可以使用SIOCGIWESSID ioctl调用来完成。

这段代码可能看起来有点混乱,因为它更类似于你在C代码中看到的东西,而不是Python,但它本质上是通过首先以Python数组的形式分配一些内存(我们将把ESSID放在其中),然后执行一个ioctl调用来就地修改该数组。

代码语言:javascript
复制
import array
import fcntl
import socket
import struct

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
maxLength = {
    "interface": 16,
    "essid": 32
}
calls = {
    "SIOCGIWESSID": 0x8B1B
}

def getESSID(interface):
    """Return the ESSID for an interface, or None if we aren't connected."""
    essid = array.array("c", "\0" * maxLength["essid"])
    essidPointer, essidLength = essid.buffer_info()
    request = array.array("c",
        interface.ljust(maxLength["interface"], "\0") +
        struct.pack("PHH", essidPointer, essidLength, 0)
    )
    fcntl.ioctl(sock.fileno(), calls["SIOCGIWESSID"], request)
    name = essid.tostring().rstrip("\0")
    if name:
        return name
    return None
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14142014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档