【问题标题】:How to get the IPv6 address of an interface under linuxlinux下如何获取接口的IPv6地址
【发布时间】:2010-08-02 14:53:11
【问题描述】:

你知道我如何在 python2.6 中获得我的一个接口的 IPv6 地址之一吗?我用套接字模块尝试了一些东西,但结果却一无所获。

谢谢。

【问题讨论】:

    标签: python linux ipv6


    【解决方案1】:

    netifaces 模块应该这样做。

    import netifaces
    addrs = netifaces.ifaddresses('eth0')
    addrs[netifaces.AF_INET6][0]['addr']
    

    【讨论】:

    • 非常感谢,遗憾的是我想在这个脚本中保持非常简单,它应该在很多不同的环境中运行。所以我一直在寻找不需要easy_install 的东西。但是,它仍然很好用,再次感谢。
    【解决方案2】:

    您可以简单地使用 subprocess.* 调用运行“ifconfig”并解析输出。

    【讨论】:

    • 我考虑过这一点,实际上我有一个准备好的(而且很长的)命令来让我的 Ipv6 格式正确。但它真的很难看。它必须存在一种更正确的方式来做到这一点。
    【解决方案3】:

    我肯定会用这个,它应该很好用,即使我觉得它真的很丑。

    step1 = Popen(['ip','addr','show','br0'],stdout=PIPE)
    step2 = Popen(['grep','inet6'],stdout=PIPE,stdin=step1.stdout)
    step3 = Popen(['sed','-e','/fe80/d','-e','s/ *inet6 *//g','-e','s/\/64.*$//g'],stdout=PIPE,stdin=step2.stdout)
    step4 = Popen(['tail','-n1'],stdout=PIPE,stdin=step3.stdout)
    step4.communicate()[0]
    

    再次感谢您的帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-11
      • 2011-01-18
      相关资源
      最近更新 更多