Как отправить команду с помощью Python Mininet API? - PullRequest
0 голосов
/ 31 января 2019

Мне нужно использовать API-интерфейс Mininet Python для выполнения команд на разных хостах.

Я попытался использовать как API, так и запустить его, используя подпроцесс и pexpect, чтобы убедиться, что это не проблема с Mininetконфигурация.

    net = Mininet()

    s1 = net.addSwitch('s1')

    for n in range(1,4):
        h = net.addHost('h%s' % n)
        net.addLink(h, s1)

    net.addController('c0', controller=RemoteController, ip='127.0.0.1', 
    port=6653)

    net.start()

    h1 = net.get('h1')
    h1.cmd('ping h2')

Это не выполняет команду h1 ping h2 (проверка с Wireshark)

Это с другой стороны работает:

    child = pexpect.spawn('sudo mn --topo single,3 --controller remote')
    child.expect('mininet>')
    print child.before
    time.sleep(5)

    child.sendline('h1 ping h2')
    time.sleep(60)

Мне нужноиспользовать API, а не pexpect из-за характера того, что я пытаюсь достичь (отправить несколько команд, чтобы разные хосты отправляли трафик одновременно. В моих тестах кажется, что pexpect может выполнить только одну команду после каждого другого).

Почему h1.cmd('ping h2') не работает?

1 Ответ

0 голосов
/ 01 февраля 2019

Команда:

h1.cmd('ping h2')

Возвращалась ошибка отладки:

Unable to resolve 'h2'

Несмотря на документацию ЗДЕСЬ с указанием того, как вы форматируете команды.

Это было исправлено с помощью следующего:

h1.cmd('ping 10.0.0.2')

Хотя я до сих пор не знаю причину этого.Если кто-нибудь знает, я хотел бы услышать.Надеюсь, это кому-нибудь поможет.

...