37 lines
1023 B
Python
Executable File
37 lines
1023 B
Python
Executable File
#!/usr/bin/python
|
|
|
|
"""
|
|
This example monitors a number of hosts using host.popen() and
|
|
pmonitor()
|
|
"""
|
|
|
|
from mininet.net import Mininet
|
|
from mininet.node import CPULimitedHost
|
|
from mininet.topo import SingleSwitchTopo
|
|
from mininet.log import setLogLevel
|
|
from mininet.util import custom, pmonitor
|
|
|
|
def monitorhosts( hosts=5, sched='cfs' ):
|
|
"Start a bunch of pings and monitor them using popen"
|
|
mytopo = SingleSwitchTopo( hosts )
|
|
cpu = .5 / hosts
|
|
myhost = custom( CPULimitedHost, cpu=cpu, sched=sched )
|
|
net = Mininet( topo=mytopo, host=myhost )
|
|
net.start()
|
|
# Start a bunch of pings
|
|
popens = {}
|
|
last = net.hosts[ -1 ]
|
|
for host in net.hosts:
|
|
popens[ host ] = host.popen( "ping -c5 %s" % last.IP() )
|
|
last = host
|
|
# Monitor them and print output
|
|
for host, line in pmonitor( popens ):
|
|
if host:
|
|
print "<%s>: %s" % ( host.name, line.strip() )
|
|
# Done
|
|
net.stop()
|
|
|
|
if __name__ == '__main__':
|
|
setLogLevel( 'info' )
|
|
monitorhosts( hosts=5 )
|