可能重复:
使用Python的stdlib查找本地IP地址
要获取我的本地主机IP地址,我这样做socket.gethostbyname(socket.gethostname()).但它给了我答案127.0.0.1.如果我这样做,an_existing_socket.getsockname()[0]我会得到答案0.0.0.0.
我需要我的'真实'IP地址(例如192.168.xx)来修改配置文件.我怎么能得到它?
我想检测连接到 DHCP 并从中获取 IP 的可用网络接口。我正在使用以下脚本来生成可用适配器的列表。
import psutil
addrs = psutil.net_if_addrs()
all_network_interfaces = addrs.keys()
available_networks = []
for value in all_network_interfaces:
if addrs[value][1][1].startswith("169.254"):
continue
else:
available_networks.append(value)
print(available_networks)
Run Code Online (Sandbox Code Playgroud)
以 169.254 开头的适配器是使用自动专用 IP 寻址 (APIPA) 的适配器,因此我想将它们过滤掉。当我使用以太网电缆连接时,此脚本会显示相关适配器,如果我在以太网仍然连接的情况下也通过 WiFi 连接,则会将 WiFi 添加到列表中。然而,在断开与 WiFi 的连接后,WiFi 适配器仍然保留该 IP,并且仍然存在于列表中。我认为这是我的适配器卡的问题(可能是功能问题)。绕过此问题并仅获取具有 DHCP 连接的适配器的最佳方法是什么?