2016-06-30 5 views
0

всякий раз, когда я пытаюсь запустить пример сценария модуля pyroute2:Pyroute2 ошибка импорта - импорт AF_BRIDGE

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' 

Основная платформа Я m, пытающийся использовать pyroute2, является OpenBSD, но проблема остается для других платформ, таких как windows.

Я тестировал это как для python3.5, так и для python2.7 в дополнение к python3.4.

Просто не знаю, как решить эту проблему. любая идея?

благодаря

+0

Как главный разработчик заявил на гиты ub, это для Linux и не работает на других платформах. – AhmedWise

ответ

1

Во-первых, от официального pyroute2 git repository:

Pyroute2 является чисто Python NetLink и библиотека конфигурации сети Linux. Для этого требуется только Python stdlib, нет сторонних библиотек. Позже он может измениться, но дерево deps останется таким же простым, насколько это возможно.

Таким образом, OpenBSD и Windows не являются системами Linux. OpenBSD не поддерживает AF_BRIDGE и поддерживается только на Linux kernel. Если вы хотите выполнить сценарий, вам нужно:

  • Create an interface для OpenBSD в pyroute2, попытайтесь открыть билет первым.
  • Порт AF_BRIDGE на OpenBSD (я не думаю, что это будет принято сообществом).
  • Найдите другую альтернативу, чтобы делать то, что вы хотите.

О альтернативы, если вам нужно только проверить таблицу маршрутов, вы можете найти хорошую альтернативу с:

  • Salt (поддерживается на Linux, Windows и * BSD)
  • Scapy (ориентированной безопасности)
  • Rex (совместим с Linux и OpenBSD, но в Perl)