我正在寻找一个简短的命令,以获得一个网络接口ip地址的名称,在python。例如,它不适用于socket.getaddr(),这是我的详细信息:

我想找个乐子所以:
x=func('vEthernet (VIC Ethernet)')
所以x是10.10.255.254,我不想运行ipconfig并解析它
谢谢
发布于 2022-01-10 15:08:53
您可以使用此函数获取主IP:
import socket
def get_ip():
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.settimeout(0)
try:
# doesn't even have to be reachable
s.connect(('10.255.255.255', 1))
IP = s.getsockname()[0]
except Exception:
IP = '127.0.0.1'
finally:
s.close()
return IP要获得所有ips,您可以使用网面:
from netifaces import interfaces, ifaddresses, AF_INET
for ifaceName in interfaces():
addresses = [i['addr'] for i in ifaddresses(ifaceName).setdefault(AF_INET, [{'addr':'No IP addr'}] )]
print(' '.join(addresses))产出:
No IP addr
No IP addr
No IP addr
No IP addr
192.168.0.104
127.0.0.1发布于 2022-01-10 15:12:56
它以元组的形式返回IP地址和端口。
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
print(s.getsockname()[0])发布于 2022-01-10 20:25:42
替罪羊模块有它的功能- get_if_addr(iface_name)谢谢大家
https://stackoverflow.com/questions/70654437
复制相似问题