【问题标题】:Python program not displaying gateway and network ipPython程序不显示网关和网络IP
【发布时间】:2015-01-11 00:42:26
【问题描述】:
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()

上面的代码在回溯 5 R3 中执行时既没有显示任何错误也没有任何输出 请帮助我处理此代码!

【问题讨论】:

    标签: python ip output local gateway


    【解决方案1】:

    您的 2 个打印语句是制表符/间隔的。删除它们,它会起作用,因为我已经确认它适用于 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()
    

    【讨论】:

    • 天哪!这是python中的废话!你是救生员,谢谢你masashake
    • 哇,这不是 Python 的错。这是一个简单的错误,不会发生在我们最好的人身上。很高兴它成功了。 :)
    • 在 python 中,空格很重要。我想知道@ZainUlAbidin 是否已经习惯了。
    • 大声笑。我在 python 上不是很方便你是对的@GeoffCrompton
    【解决方案2】:

    这可能太简单了,但最后两行是 getNetworkIp() 的一部分,因为它们是这样缩进的。

    当我尝试这个时,我什至从 Python 中得到一个缩进错误。

    请注意,当我将最后 2 个打印语句移到第 0 列时,我会收到另一个错误,因为我收到“名称或服务未知”错误...但这可能是一个旧的 Linux/Python 问题,或者需要根。

    无论如何,请尝试取消最后两个打印语句的缩进。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-23
      • 2012-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-04
      • 2012-04-27
      • 2023-03-27
      相关资源
      最近更新 更多