-
Brandon Heller authored
Now, to reference mininet files, use 'import mininet.mininet'. PYTHONPATH mods are no longer required for installation.
Brandon Heller authoredNow, to reference mininet files, use 'import mininet.mininet'. PYTHONPATH mods are no longer required for installation.
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
xterms.py 1.49 KiB
#!/usr/bin/python
"""
Create a network and run an xterm (connected via screen(1) ) on each
host. Requires xterm(1) and GNU screen(1).
"""
import os, re
from subprocess import Popen
from mininet.mininet import init, TreeNet, quietRun
def makeXterm( node, title ):
"Run screen on a node, and hook up an xterm."
title += ': ' + node.name
if not node.inNamespace: title += ' (root)'
cmd = [ 'xterm', '-title', title, '-e' ]
if not node.execed:
node.cmdPrint( 'screen -dmS ' + node.name )
cmd += [ 'screen', '-D', '-RR', '-S', node.name ]
else:
cmd += [ 'sh', '-c', 'exec tail -f /tmp/' + node.name + '*.log' ]
return Popen( cmd )
def cleanUpScreens():
"Remove moldy old screen sessions."
r = r'(\d+.[hsc]\d+)'
output = quietRun( 'screen -ls' ).split( '\n' )
for line in output:
m = re.search( r, line )
if m is not None:
quietRun( 'screen -S ' + m.group( 1 ) + ' -X kill' )
def makeXterms( nodes, title ):
return [ makeXterm( node, title) for node in nodes]
def xterms( controllers, switches, hosts ):
cleanUpScreens()
terms = makeXterms( controllers, 'controller' )
terms += makeXterms( switches, 'switch' )
terms += makeXterms( hosts, 'host' )
# Wait for xterms to exit
for term in terms:
os.waitpid( term.pid, 0 )
cleanUpScreens()
if __name__ == '__main__':
init()
print "Running xterms on", os.environ[ 'DISPLAY' ]
network = TreeNet( depth=2, fanout=2, kernel=True )
network.run( xterms )