Python程序不显示网关和网络ip

2024-07-04 09:10:58 发布

您现在位置:Python中文网/ 问答频道 /正文

import socket
import struct

def get_default_gateway_linux():
    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)))


def getNetworkIp():
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    s.connect(('bt', 0))
    return s.getsockname()[0] 


    print "Your Machine IP has been detected as "+getNetworkIp()

    print "Your Gateway IP has been detected as "+get_default_gateway_linux()

上面的代码在回溯5r3中执行时既不显示任何错误也不显示任何输出 请帮助我了解这个代码!你知道吗


Tags: importdefaultfieldsgetreturnlinuxdefas
2条回答

这可能太简单而不真实,但最后两行是getNetworkIp()的一部分,因为它们是这样缩进的。你知道吗

我甚至从Python那里得到了一个缩进错误。你知道吗

请注意,当我将最后2条print语句移到第0列时,会出现另一个错误,因为我遇到了“name or service not known”错误。。。但这可能是Linux/Python的老问题,或者需要root。你知道吗

无论如何,尝试取消最后两个print语句的缩进。你知道吗

您的两个打印语句是制表符/间隔的。删除它们,它将工作,因为我已经确认这是在CentOS 6.5上工作:

def getNetworkIp():
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    s.connect(('localhost',0))
    return s.getsockname()[0]

print "Your Machine IP has been detected as "+getNetworkIp()

print "Your Gateway IP has been detected as "+get_default_gateway_linux()

相关问题 更多 >

    热门问题