From 76a8a1637f4d721e977a0799f88fd538a0c7ce67 Mon Sep 17 00:00:00 2001 From: Bob Lantz Date: Wed, 18 Sep 2013 20:48:22 -0700 Subject: [PATCH] Clean up sshd.py and its test so it works on VirtualBox --- examples/sshd.py | 32 +++++++++++++++++++------------- examples/test/test_sshd.py | 2 +- 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/examples/sshd.py b/examples/sshd.py index 3c94359..cef1d87 100755 --- a/examples/sshd.py +++ b/examples/sshd.py @@ -21,7 +21,7 @@ import sys from mininet.net import Mininet from mininet.cli import CLI from mininet.log import lg -from mininet.node import Node, OVSKernelSwitch +from mininet.node import Node from mininet.topolib import TreeTopo from mininet.link import Link @@ -30,29 +30,33 @@ def TreeNet( depth=1, fanout=2, **kwargs ): topo = TreeTopo( depth, fanout ) return Mininet( topo, **kwargs ) -def connectToRootNS( network, switch, ip, prefixLen, routes ): +def connectToRootNS( network, switch, ip, routes ): """Connect hosts to root namespace via switch. Starts network. network: Mininet() network object switch: switch to connect to root namespace ip: IP address for root namespace node - prefixLen: IP address prefix length (e.g. 8, 16, 24) routes: host networks to route to""" # Create a node in root namespace and link to switch 0 root = Node( 'root', inNamespace=False ) intf = Link( root, switch ).intf1 - root.setIP( ip, prefixLen, intf ) + root.setIP( ip, intf=intf ) # Start network that now includes link to root namespace network.start() # Add routes from root ns to hosts for route in routes: root.cmd( 'route add -net ' + route + ' dev ' + str( intf ) ) -def sshd( network, cmd='/usr/sbin/sshd', opts='-D' ): - "Start a network, connect it to root ns, and run sshd on all hosts." - switch = network.switches[ 0 ] # switch to use - ip = '10.123.123.1' # our IP address on host network - routes = [ '10.0.0.0/8' ] # host networks to route to - connectToRootNS( network, switch, ip, 8, routes ) +def sshd( network, cmd='/usr/sbin/sshd', opts='-D', + ip='10.123.123.1/32', routes=None, switch=None ): + """Start a network, connect it to root ns, and run sshd on all hosts. + ip: root-eth0 IP address in root namespace (10.123.123.1/32) + routes: Mininet host networks to route to (10.0/24) + switch: Mininet switch to connect to root namespace (s1)""" + if not switch: + switch = network[ 's1' ] # switch to use + if not routes: + routes = [ '10.0.0.0/24' ] + connectToRootNS( network, switch, ip, routes ) for host in network.hosts: host.cmd( cmd + ' ' + opts + '&' ) print @@ -69,7 +73,9 @@ def sshd( network, cmd='/usr/sbin/sshd', opts='-D' ): if __name__ == '__main__': lg.setLogLevel( 'info') - net = TreeNet( depth=1, fanout=4, switch=OVSKernelSwitch ) - # get sshd args from the command line; default: -D - opts = ' '.join( sys.argv[ 1: ] ) if len( sys.argv ) > 1 else '-D' + net = TreeNet( depth=1, fanout=4 ) + # get sshd args from the command line or use default args + # useDNS=no -u0 to avoid reverse DNS lookup timeout + opts = ' '.join( sys.argv[ 1: ] ) if len( sys.argv ) > 1 else ( + '-D -o UseDNS=no -u0' ) sshd( net, opts=opts ) diff --git a/examples/test/test_sshd.py b/examples/test/test_sshd.py index 04bd184..eae65e8 100755 --- a/examples/test/test_sshd.py +++ b/examples/test/test_sshd.py @@ -40,7 +40,7 @@ class testSSHD( unittest.TestCase ): sh( 'cat /tmp/ssh/test_rsa.pub >> /tmp/ssh/authorized_keys' ) cmd = ( 'python -m mininet.examples.sshd -D ' '-o AuthorizedKeysFile=/tmp/ssh/authorized_keys ' - '-o StrictModes=no' ) + '-o StrictModes=no -o UseDNS=no -u0' ) # run example with custom sshd args self.net = pexpect.spawn( cmd ) self.net.expect( 'mininet>' )