Pyroute2导入错误 - 导入AF_BRIDGE

时间:2016-06-30 07:28:43

标签: python python-2.7 import python-3.5 openbsd

每当我尝试运行pyroute2模块的示例脚本时:

from pyroute2 import IPRoute
ip = IPRoute()
print([x.get_attr('IFLA_IFNAME') for x in ip.get_links()])

我收到以下错误:

Traceback (most recent call last):
  File "ex.py", line 2, in <module>
    ip = IPRoute()
  File "C:\Python35\lib\site-packages\pyroute2\__init__.py", line 122, in __new_
_
    cls.register(cls.registry['class'])
  File "C:\Python35\lib\site-packages\pyroute2\__init__.py", line 102, in __geti
tem__
    [name], 0)
  File "C:\Python35\lib\site-packages\pyroute2\iproute.py", line 175, in <module
>
    from socket import AF_BRIDGE
ImportError: cannot import name 'AF_BRIDGE'

我正在尝试使用pyroute2的主要平台是OpenBSD,但问题仍然存在于windows等其他平台上。

除了python3.4之外,我还在python3.5和python2.7周围进行了测试。

只是不知道如何解决这个问题。 任何想法?

感谢

1 个答案:

答案 0 :(得分:2)

首先,来自官方pyroute2 git repository

  

Pyroute2是一个纯Python的netlink和Linux网络配置库。它只需要Python stdlib,没有第三方库。稍后它可以改变,但deps树将保持尽可能简单。

因此,OpenBSD和Windows不是Linux系统。 OpenBSD不支持AF_BRIDGE,仅在Linux kernel支持。如果要执行脚本,则需要:

  • Create an interface对于pyroute2中的OpenBSD,请先尝试打开票证。
  • OpenBSD上的端口AF_BRIDGE(我认为这不会被社区接受)。
  • 找到另一种方法来做你想做的事。

关于替代方案,如果您只需要检查您的路线表,您可以找到以下的好选择:

  • Salt(在Linux,Windows和* BSD上受支持)
  • Scapy(面向安全)
  • Rex(与Linux和OpenBSD兼容但在Perl中兼容)