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

时间:2011-02-04 23:49:53

标签: python ip

我想使用Python获取默认网关(内部路由器IP)的IP。我是Python的新手,所以不确定它是如何工作的。

我知道您可以通过以下方式获取机器的IP:

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

所以我认为它必须是类似的东西?

1 个答案:

答案 0 :(得分: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

您可以在this page上找到有关在网络设备上执行WMI操作的更多详细信息和技巧。

对于Linux,PyNetInfo建议的this page将是一个很好的方法。虽然在Linux上,你可以通过阅读其他import os; os.system(...)技巧中的PROC条目来依赖其他模块。