From e3d07bc1a0132feea8f356814ae4acbdea1d1d63 Mon Sep 17 00:00:00 2001 From: Bob Lantz <rlantz@cs.stanford.edu> Date: Tue, 28 May 2013 22:10:27 -0700 Subject: [PATCH] Add 'x' command to open an X11 tunnel (and run a client) fixes #142 --- mininet/cli.py | 13 ++++++++++++- mininet/term.py | 6 ++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/mininet/cli.py b/mininet/cli.py index ea72f8da..a89051da 100644 --- a/mininet/cli.py +++ b/mininet/cli.py @@ -33,7 +33,7 @@ import time from mininet.log import info, output, error -from mininet.term import makeTerms +from mininet.term import makeTerms, runX11 from mininet.util import quietRun, isShellBuiltin, dumpNodeConnections class CLI( Cmd ): @@ -241,6 +241,17 @@ def do_xterm( self, line, term='xterm' ): node = self.nodemap[ arg ] self.mn.terms += makeTerms( [ node ], term = term ) + def do_x( self, line ): + """Create an X11 tunnel to the given node, + optionally starting a client.""" + args = line.split() + if not args: + error( 'usage: x node [cmd args]...\n' ) + else: + node = self.mn[ args[ 0 ] ] + cmd = args[ 1: ] + self.mn.terms += runX11( node, cmd ) + def do_gterm( self, line ): "Spawn gnome-terminal(s) for the given node(s)." self.do_xterm( line, term='gterm' ) diff --git a/mininet/term.py b/mininet/term.py index c99a8248..4c6370cf 100644 --- a/mininet/term.py +++ b/mininet/term.py @@ -52,6 +52,12 @@ def makeTerm( node, title='Node', term='xterm', display=None ): term = node.popen( cmds[ term ] + [ display, '-e', 'env TERM=ansi bash'] ) return [ tunnel, term ] if tunnel else [ term ] +def runX11( node, cmd ): + "Run an X11 client on a node" + display, tunnel = tunnelX11( node ) + popen = node.popen( cmd ) + return [ tunnel, popen ] + def cleanUpScreens(): "Remove moldy socat X11 tunnels." errRun( "pkill -9 -f mnexec.*socat" ) -- GitLab