我想自动化设置 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
我尝试过的事情:
- 使用
s0 bash
结束here 文档; - 以
s0 $SHELL
结尾; - 删除此处文档末尾的分隔符(在黑暗中拍摄)。
(1) 和 (2) 退出 Mininet 并在 VM 中留下提示,但由于某种原因我无法从它发出命令。 (3) 什么都不做。
最佳答案
如果你在一个文件中有那个 python topo,你可以通过使用
来运行 toposudo -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/