Мне нужно использовать 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')
не работает?