Python-只获取连接的本地NIC的MAC地址

2024-06-26 12:51:23 发布

您现在位置:Python中文网/ 问答频道 /正文

目标是收集连接的本地NIC的MAC地址, 不是所有本地NIC的列表

通过使用socketconnect (to_a_website), 我可以用getsockname()来获取IP, 用于连接到Internet的。

但是从IP我怎么才能得到本地网卡的MAC地址呢?

问题的主要原因是是否存在多个NIC。


Tags: toip目标列表mac地址connect原因
3条回答

使用netifaces模块。它也是on PyPI,因此您可以通过easy_installpip安装它。

无法检索外部IP的MAC地址。

请参阅how to get mac address of external IP in C#上的讨论,了解更多说明。

正如vartec所建议的,netifaces应该可以很好地从IP转到iface:

    import netifaces as nif
    def mac_for_ip(ip):
        'Returns a list of MACs for interfaces that have given IP, returns None if not found'
        for i in nif.interfaces():
            addrs = nif.ifaddresses(i)
            try:
                if_mac = addrs[nif.AF_LINK][0]['addr']
                if_ip = addrs[nif.AF_INET][0]['addr']
            except IndexError, KeyError: #ignore ifaces that dont have MAC or IP
                if_mac = if_ip = None
            if if_ip == ip:
                return if_mac
        return None

测试:

    >>> mac_for_ip('169.254.90.191')
    '2c:41:38:0a:94:8b'

相关问题 更多 >