Files
mininet/bin/mnclean
T
Bob Lantz ac9554d6dc Renamed mn_run.py -> mn, mn_clean.py -> mnclean; updated Makefle
It's possible that mn_clean is a bit easier to read; mnclean may be easier
to type, however.

Added variables to Makefile so that source files are listed in a single
location.
2010-02-03 15:29:07 -08:00

59 lines
1.8 KiB
Python
Executable File

#!/usr/bin/env python
"""Mininet Cleanup
@author Bob Lantz (rlantz@cs.stanford.edu)
Unfortunately, Mininet and OpenFlow don't always clean up
properly after themselves. Until they do (or until cleanup
functionality is integrated into the python code), this
script may be used to get rid of unwanted garbage. It may
also get rid of 'false positives', but hopefully nothing
irreplaceable!
"""
from subprocess import Popen, PIPE
from mininet.xterm import cleanUpScreens
def sh(cmd):
"Print a command and send it to the shell"
print cmd
return Popen(['/bin/sh', '-c', cmd], stdout=PIPE).communicate()[0]
def cleanup():
"""Clean up junk which might be left over from old runs;
do fast stuff before slow dp and link removal!"""
print "*** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes"
zombies = 'controller ofprotocol ofdatapath ping nox_core lt-nox_core '
zombies += 'udpbwtest'
# Note: real zombie processes can't actually be killed, since they
# are already (un)dead. Then again,
# you can't connect to them either, so they're mostly harmless.
sh('killall -9 ' + zombies + ' 2> /dev/null')
print "*** Removing junk from /tmp"
sh('rm -f /tmp/vconn* /tmp/vlogs* /tmp/*.out /tmp/*.log')
print "*** Removing old screen sessions"
cleanUpScreens()
print "*** Removing excess kernel datapaths"
dps = sh("ps ax | egrep -o 'dp[0-9]+' | sed 's/dp/nl:/'").split('\n')
for dp in dps:
if dp != '':
sh('dpctl deldp ' + dp)
print "*** Removing all links of the pattern foo-ethX"
links = sh("ip link show | egrep -o '(\w+-eth\w+)'").split('\n')
for link in links:
if link != '':
sh("ip link del " + link)
print "*** Cleanup complete."
if __name__ == "__main__":
cleanup()