linux - 从 bash 脚本初始化 Mininet 拓扑

标签 linux bash shell mininet

我想自动化设置 Mininet 的过程虚拟机,通过 SSH 连接到 VM,在 VM 中启动 Mininet,并初始化拓扑。我需要 session 保持打开状态,以便我可以使用创建的网络向 Mininet 发出命令。一切正常,包括初始化网络,但一旦 bash 脚本结束,Mininet 就会拆除拓扑并退出虚拟机。我的代码的相关部分如下:

vboxmanage startvm "Mininet-VM_1" --type=headless

ssh -t -Y -l mininet -p 2222 localhost << HERPDERP

    # Start the network
    sudo mn --controller=remote,ip=$ip --custom /home/mininet/sf_mininet_vm/mininet/topo_basic.py --topo clos_tree --switch ovsk --link tc

HERPDERP

我尝试过的事情:

  1. 使用 s0 bash 结束here 文档;
  2. s0 $SHELL 结尾;
  3. 删除此处文档末尾的分隔符(在黑暗中拍摄)。

(1) 和 (2) 退出 Mininet 并在 VM 中留下提示,但由于某种原因我无法从它发出命令。 (3) 什么都不做。

最佳答案

如果你在一个文件中有那个 python topo,你可以通过使用

来运行 topo
sudo -E python <nameofthefile>

例如,如果您的拓扑在文件 Pkt_Topo_with_loop.py 中,你可以只使用 sudo -E python Pkt_Topo_with_loop.py 来启动 mininet。因此,您可以在 bash 脚本中包含该行以实现自动化。

关于linux - 从 bash 脚本初始化 Mininet 拓扑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31070393/

相关文章:

linux - 根据分隔符将一个文件拆分为多个文件

linux - 删除文件后,linux 中的查找和删除命令返回退出状态 1

shell - 使用 shell 命令作为 INSTALL_COMMAND 到 ExternalProject_Add

bash - 文件名末尾的 Shell 脚本不需要的 '?' 字符

Linux bash 脚本文件连接

linux - 判断所有用户的shell是登录还是非登录shell

c - 如何在 gdb 中查看 printf 的输出?

linux - 如何向网页发送信号

linux - 将 ks.cfg 与 virt-install 一起使用?

git - 我应该使用 `sh -c\"...\"` 还是 `"!f() {... ; }; f"在 git 别名脚本中?