如何使用来自外部

时间:2017-03-13 08:04:47

标签: python mininet

我是mininet的新手。我想运行mininet命令来运行python脚本,例如" nodes"," dump"。我可以创建拓扑但不能通过我的脚本使用这些命令。我使用的是Ubuntu 14.04。

import subprocess as sb
import os
print "Single Switch and 4 Hosts per switch topology"
print "Creation of topology"
os.system(" sudo mn --topo = single,4",shell=True)
os.system("nodes")

错误:

sh: 1: nodes: not found
32512

我不想通过python脚本创建拓扑,我只想使用mininet命令。

3 个答案:

答案 0 :(得分:3)

正如nirOs建议的那样,你应该使用Mininet Python Library。通读https://github.com/mininet/mininet/wiki/Introduction-to-Mininet以更好地了解如何创建拓扑。 创建后,您可以使用hostObject.cmd('您的命令在这里')。 mininet中的每个主机都使用自己的命名空间创建。这个“cmd”在主机的命名空间中执行给定的命令。 例如 : host1.cmd(“ifconfig”)#这会返回主机的IP信息

答案 1 :(得分:1)

问题是mininet是一个交互式CLI。您不能简单地调用它,然后在交互式CLI阻止时传递另一个命令。

有办法解决这个问题。看这里:Wrapping an interactive CLI in python

并检查pexpect以便更轻松地与交互式CLI进行互动。

答案 2 :(得分:0)

很高兴我发现了这个问题。我有一个非常相似的子问题。我知道您可以使用例如python从python执行mininet CLI命令。 h1.cmd('ifconfig'),但有没有办法从python到mininet>提示符做同样的事情?即不将其指向拓扑中的特定主机(我正在模拟故障,因此某些主机已断开连接)。像net.cmd('python module.py')这样的东西? @Abhimanyu singh @ nir0s