对于那些不想额外依赖并且不喜欢调用子流程的人,可以通过
/proc/net/route直接阅读以下内容来自己做:
import socket, structdef 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',...,=以便代码使用计算机的本机字节序。



