【问题标题】:Pyroute2 import error - import AF_BRIDGEPyroute2 导入错误 - 导入 AF_BRIDGE
【发布时间】:2016-11-02 03:53:43
【问题描述】:

每当我尝试运行 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进行了测试。

只是不知道如何解决这个问题。 有什么想法吗?

谢谢

【问题讨论】:

  • 正如 github 上的主要开发者所说,它适用于 linux,不适用于其他平台。

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


【解决方案1】:

首先来自官方pyroute2 git repository

Pyroute2 是一个纯 Python netlink 和 Linux 网络配置库。它只需要 Python 标准库,不需要 3rd 方库。稍后它可以更改,但 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 中)

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2017-08-30
  • 1970-01-01
  • 2018-09-12
  • 2014-10-10
  • 1970-01-01
  • 1970-01-01
  • 2021-07-18
  • 1970-01-01
相关资源
最近更新 更多