Python:在Linux中获取本地接口/ IP地址的默认网关

在Linux上,如何使用python查找本地IP地址/接口的默认网关?

我看到了“如何获取UPnP的内部IP,外部IP和默认网关”的问题,但是公认的解决方案仅显示了如何获取Windows网络接口的本地IP地址。

谢谢。

回答:

对于那些不想额外依赖并且不喜欢调用子流程的人,可以通过/proc/net/route直接阅读以下内容来自己做:

import socket, struct

def get_default_gateway_linux():

"""Read the default gateway directly from /proc."""

with open("/proc/net/route") as fh:

for line in fh:

fields = line.strip().split()

if fields[1] != '00000000' or not int(fields[3], 16) & 2:

continue

return socket.inet_ntoa(struct.pack("<L", int(fields[2], 16)))

我没有要测试的大端字节序计算机,因此我不确定字节序是否取决于您的处理器体系结构,但是如果是,请替换为<in struct.pack('<L',

...=以便代码使用计算机的本机字节序。

以上是 Python:在Linux中获取本地接口/ IP地址的默认网关 的全部内容, 来源链接: utcz.com/qa/426238.html

回到顶部