使用import.socket是否能获取DHCP IP?还是要减去1?

1 投票
1 回答
721 浏览
提问于 2025-04-17 12:32

根据标题,我想获取我连接的设备的DHCP IP地址。

到目前为止,我有:

import socket

def getIPAddresses():
    addr = socket.gethostbyname_ex(socket.gethostname())
    for i in addr[2]:
        if "169.254" in i:
            if i != "169.254.0.2":
                print socket.gethostbyaddr(i)

if __name__ == "__main__":
    getIPAddresses()

基本上,情况是我有两个设备连接在一起,我想连接那个IP地址不是169.254.0.1的设备。

我想如果有更高效的写法那当然更好,但我最关心的还是获取DHCP IP地址(DHCP IP地址减去1)。

非常感谢!谢谢!

1 个回答

0

作为一个快速解决办法,我只是把IP的最后一部分减了一。

ip_oct = ip.split('.')
ip_oct[3] = str(int(ip_oct[3]) -1)
return '.'.join(ip_oct)

我知道这不是最优雅的解决方案,但这确实大大减少了数字行数,让我觉得简单多了。

我基本上是把我获取的IP分开,然后对最后一部分减一。接着我用点号把它们连接起来,返回成IP。

顺便说一下,我在使用Google Robot Framework的gethostbyname_ex时没有成功,所以我不得不使用getaddrinfo来获取IP。

再说一次,这不是最好的解决办法,因为我想通过MAC地址和ARP来实现,但……我没时间去搞明白这个,几个月后再来处理。

撰写回答