【发布时间】:2017-11-26 03:55:17
【问题描述】:
给定一个 Mininet 网络,我想模拟流程,例如使用iperf。为此,我可以运行以下命令:
h5 iperf3 -s -p 1337 &
h6 iperf3 -s -p 1338 &
h1 iperf3 -c h5 -n 10G -b 11M -p 1337 &
h2 iperf3 -c h6 -n 10G -b 11M -p 1338 &
在 Mininet CLI 中,h1、h2 ... 代表 Mininet 拓扑上的主机。如果 Mininet 命令以主机 ID 开头,则该命令将像在该主机上一样运行。为方便起见,以后出现的任何 ID 都将替换为其 IP 地址。
这些命令有效,但我还没有找到自动化它们的方法。我可以运行一个可以调用 bash 命令的 python 脚本,但是上面的命令会中断,因为上下文无法理解 mininet ID。手动输入所有这些内容很烦人,即使是复制粘贴工作。
有没有办法向 mininet CLI 发送一批命令?
【问题讨论】:
-
如果“mininet CLI”是您在运行上述命令之前启动的程序,您能说明您是如何调用它的吗?您实际输入命令的是 bash 本身还是 mininet,这很重要。
-
...如果上面需要输入的是mininet,那你应该看看Here documents。
-
这些命令是在mininet CLI里面输入的,是的。 CLI 是从 python 脚本调用的,这在我在 Internet 上找到的示例中通常是这种情况。调用 CLI 的 python 函数是
CLI({mininet object})。不过,到目前为止,我还没有找到一种方法将外部终端的任何内容通过管道传输到 CLI... -
考虑编辑您的 Q 以显示在您到达示例代码的第一行
h5 iperf3 -s -p 1337 &之前所需的所有步骤。祝你好运。 -
从
http://mininet.org/看来您可以完全跳过python部分并使用sudo mn获取CLI。然后你应该可以使用上面提到的HERE文档来传递命令。您必须在开始之前为变量赋值,因此h5 iperf3 -s -p 1337可能是该行的 1 个变量,或者它可以像h${num1} iperf3 -s -p ${port1}一样分开。祝你好运。