Tweaks to documentation files and sshd and xterms examples.
Added scratchnetuser.
This commit is contained in:
Executable
+43
@@ -0,0 +1,43 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
"""
|
||||
Build a simple network from scratch, using mininet primitives.
|
||||
This is more complicated than using the higher-level classes,
|
||||
but it exposes the configuration details and allows cusomization.
|
||||
|
||||
This version uses the user datapath.
|
||||
"""
|
||||
|
||||
from mininet import init, Node, createLink
|
||||
|
||||
def scratchNet( cname='controller', cargs='ptcp:'):
|
||||
# Create Network
|
||||
controller = Node( 'c0' )
|
||||
switch = Node( 's0')
|
||||
h0 = Node( 'h0' )
|
||||
h1 = Node( 'h1' )
|
||||
createLink( controller, switch )
|
||||
createLink( h0, switch )
|
||||
createLink( h1, switch )
|
||||
# Configure control network
|
||||
controller.setIP( controller.intfs[ 0 ], '10.0.123.1', '/24' )
|
||||
switch.setIP( switch.intfs[ 0 ], '10.0.123.2', '/24' )
|
||||
# Configure hosts
|
||||
h0.setIP( h0.intfs[ 0 ], '192.168.123.1', '/24' )
|
||||
h1.setIP( h1.intfs[ 0 ], '192.168.123.2', '/24' )
|
||||
# Start network using user datapath
|
||||
controller.cmdPrint( cname + ' ' + cargs + '&' )
|
||||
switch.cmdPrint( 'ifconfig lo 127.0.0.1' )
|
||||
switch.cmdPrint( 'ofdatapath -i ' + ','.join( switch.intfs[ 1: ])
|
||||
+ ' ptcp: &' )
|
||||
switch.cmdPrint( 'ofprotocol tcp:' + controller.IP() + ' tcp:localhost &' )
|
||||
# Run test
|
||||
h0.cmdPrint( 'ping -c1 ' + h1.IP() )
|
||||
# Stop network
|
||||
controller.cmdPrint( 'kill %' + cname)
|
||||
switch.cmdPrint( 'kill %ofdatapath' )
|
||||
switch.cmdPrint( 'kill %ofprotocol' )
|
||||
|
||||
if __name__ == '__main__':
|
||||
init()
|
||||
scratchNet()
|
||||
+10
-9
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
"""
|
||||
Create a network and start sshd(8) on the hosts.
|
||||
Create a network and start sshd(8) on each host.
|
||||
|
||||
While something like rshd(8) would be lighter and faster,
|
||||
(and perfectly adequate on an in-machine network)
|
||||
@@ -36,15 +36,10 @@ def connectToRootNS( network, switch ):
|
||||
for net in routes:
|
||||
root.cmdPrint( 'route add -net ' + net + ' dev ' + intf )
|
||||
|
||||
def startServers( network, server ):
|
||||
"Start network, and servers on each host."
|
||||
def sshd( network ):
|
||||
"Start a network, connect it to root ns, and run sshd on all hosts."
|
||||
connectToRootNS( network, network.switches[ 0 ] )
|
||||
for host in network.hosts: host.cmdPrint( server )
|
||||
|
||||
if __name__ == '__main__':
|
||||
init()
|
||||
network = TreeNet( depth=1, fanout=4, kernel=True )
|
||||
startServers( network, '/usr/sbin/sshd' )
|
||||
for host in network.hosts: host.cmd( 'sshd -D &' )
|
||||
print
|
||||
print "*** Hosts are running sshd at the following addresses:"
|
||||
print
|
||||
@@ -52,4 +47,10 @@ if __name__ == '__main__':
|
||||
print
|
||||
print "*** Press return to shut down network: ",
|
||||
readline()
|
||||
for host in network.hosts: host.cmd( 'kill %sshd')
|
||||
network.stop()
|
||||
|
||||
if __name__ == '__main__':
|
||||
init()
|
||||
network = TreeNet( depth=1, fanout=4, kernel=True )
|
||||
sshd( network )
|
||||
+9
-11
@@ -7,15 +7,18 @@ host. Requires xterm(1) and GNU screen(1).
|
||||
|
||||
import os, re
|
||||
from subprocess import Popen
|
||||
from mininet import init, TreeNet, Cli, quietRun
|
||||
from mininet import init, TreeNet, quietRun
|
||||
|
||||
def makeXterm( node, title ):
|
||||
"Run screen on a node, and hook up an xterm."
|
||||
node.cmdPrint( 'screen -dmS ' + node.name )
|
||||
title += ': ' + node.name
|
||||
if not node.inNamespace: title += ' (root)'
|
||||
cmd = [ 'xterm', '-title', title ]
|
||||
cmd += [ '-e', 'screen', '-D', '-RR', '-S', node.name ]
|
||||
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():
|
||||
@@ -28,16 +31,11 @@ def cleanUpScreens():
|
||||
quietRun( 'screen -S ' + m.group( 1 ) + ' -X kill' )
|
||||
|
||||
def makeXterms( nodes, title ):
|
||||
terms = []
|
||||
for node in nodes:
|
||||
if not node.execed:
|
||||
terms += [ makeXterm( node, title ) ]
|
||||
return terms
|
||||
return [ makeXterm( node, title) for node in nodes]
|
||||
|
||||
def xterms( controllers, switches, hosts ):
|
||||
cleanUpScreens()
|
||||
terms = []
|
||||
terms += makeXterms( controllers, 'controller' )
|
||||
terms = makeXterms( controllers, 'controller' )
|
||||
terms += makeXterms( switches, 'switch' )
|
||||
terms += makeXterms( hosts, 'host' )
|
||||
# Wait for xterms to exit
|
||||
|
||||
Reference in New Issue
Block a user