如何用Python获取默认网关IP?
我想用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(...)
,来避免依赖额外的模块。