Я хотел бы автоматизировать процесс настройки виртуальной машины Mininet, SSHing в виртуальную машину, запуск Mininet в VM и инициализацию топологии. Мне нужно, чтобы сеанс оставался открытым, поэтому я могу выдавать команды Mininet с помощью созданной сети. Все работает, включая инициализацию сети, но как только скрипт bash заканчивается, Mininet срывает топологию и выходит из виртуальной машины. Соответствующие части моего кода следующим образом:Инициализация топологии Mininet из сценария bash
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
; - Окончание с
s0 $SHELL
; - Снятие ограничителя в конце здесь документ (снято в темноте).
(1) и (2) вышел из Mininet и оставил меня с приглашением на виртуальной машине, но по какой-то причине я не могу выдавать команды от него. (3) ничего не делает.
Не команда mininet 'mn'? –
Да, это команда инициализации сети, но я имел в виду команды в Mininet (например, pingall). Я обнаружил, что инициализация сети лучше всего обрабатывать через API Python, например: topo = SingleSwitchTopo (n = 4) net = Mininet (topo) net.start() CLI (net) # эта строка начнет работу с Mininet CLI и оставить его открытым для принятия команд. – Toni
Хорошо, если у вас есть этот python topo в файле, вы можете запустить topo, просто используя 'sudo -E python' –