Я написал модуль Python для генерации случайной топологии с помощью Mininet и подключил OpenDayLight в качестве удаленного контроллера.
Я хотел бы передать команду в интерфейс командной строки mininet, но изнутри модуля python. После создания хостов и коммутаторов, а также их подключения к удаленному контроллеру модуль случайным образом выбирает 2 хоста, которые будут действовать как сервер и клиент. У меня возникли проблемы с выполнением чего-то подобного, но из встроенного модуля python:
mininet> h<random_number> sudo python HTTPTraffic.py <SrcIP> <DstIP>
HTTPTraffic.py
— это еще один модуль, который принимает аргументы SrcIP
и DstIP
.
Это часть основного модуля, которая выбирает 2 случайных хоста и получает их IP-адреса. Я хотел бы, чтобы HTTPTraffic.py
работал на хосте, соответствующем SrcIP
Nodes = list(range(1,h))
Src = random.choice(Nodes) # randomly chooses 1 host
Nodes.remove(Src)
Dst = random.choice(Nodes) # randomly chooses another host
SrcName = 'h%s' %(Src)
DstName = 'h%s' %(Dst)
SrcNode=net.get(SrcName)
DstNode=net.get(DstName)
SrcIP = SrcNode.IP() # IP retrieval of chosen hosts
DstIP = DstNode.IP()
print ('The Souce/Client is: '+ SrcName)
print (SrcIP)
print ('The Destination/Server is: '+ DstName)
print (DstIP)
SrcName +".cmd('sudo python HTTPTraffic.py "+SrcIP+" " +DstIP+"')" # this is where I am having trouble
Из документации API mininet (см. раздел "Настройка сети") нечто подобное возможно, но У меня так много проблем с этим. Кроме того, я хотел бы, чтобы эта команда работала в фоновом режиме, пока работает основная программа. Любая обратная связь приветствуется.