如何用Python获取默认网关IP?

4 投票
1 回答
13679 浏览
提问于 2025-04-16 11:16

我想用Python获取默认网关的IP地址(也就是内部路由器的IP)。我对Python还很陌生,所以不太清楚这个怎么做。

我知道可以用下面的代码获取我电脑的IP地址:

import socket
internal_ip = socket.gethostbyname(socket.gethostname())
print internal_ip

所以我在想,获取默认网关的IP应该也差不多吧?

1 个回答

4

在Windows系统上,你可以使用WMI,配合合适的查询来查找对象的属性,比如网络设备。下面这段Python代码可以在我的Windows 7电脑上打印出IPv4地址和默认网关地址:

代码:

import wmi

wmi_obj = wmi.WMI()
wmi_sql = "select IPAddress,DefaultIPGateway from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE"
wmi_out = wmi_obj.query( wmi_sql )

for dev in wmi_out:
    print "IPv4Address:", dev.IPAddress[0], "DefaultIPGateway:", dev.DefaultIPGateway[0]

输出:

IPv4Address: 192.168.0.2 DefaultIPGateway: 192.168.0.1

你可以在这个页面找到更多关于在网络设备上执行WMI操作的详细信息和技巧。

对于Linux系统,PyNetInfo是一个不错的选择,具体可以参考这篇文章。虽然在Linux上,你也可以通过读取PROC条目,或者使用一些其他的技巧,比如import os; os.system(...),来避免依赖额外的模块。

撰写回答