Something went wrong on our end
-
Boman Romain authoredBoman Romain authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
cleanLocalHdd.py 2.78 KiB
#!/usr/bin/env python
# -*- coding: latin-1; -*-
#
# Script cleanLocalHdd.py : listing de l'utilisation et nettoyage des disques locaux sur le cluster
#
import os, sys, subprocess
def listByUser(user, nodesList):
print "listing local disk use for user %s"%user
print "\t on nodes : %s"%nodesList
global nbnodes
outFN = 'listLocalHddUse.out'
out = open(outFN, "w")
# ignore ne marche pas !!! (ai essayé toutes les combinaisons)
#cmd1 = "ls -ldh /local/%s* --ignore='/local/lost+found'" %user
cmd1 = "ls -ldh /local/%s*" %user
cmd2 = "du -sh /local/%s* --exclude /local/lost+found " %user
cmd="%s; %s"%(cmd1,cmd2)
print cmd
for inode in nodesList:
print "\n\tNode%03d\n\t========"%(inode)
sshCmd = "ssh node%03d '%s'"%(inode, cmd)
callOut = subprocess.call(sshCmd, shell=True)
def delByUser(user, nodesList):
print "deleting local disk dirs for user %s"%user
print "\t on nodes : %s"%nodesList
sure = raw_input("are you sure ? (yes/No) : ")
if sure=='' or sure.lower()!="yes":
print "Aborted ..."
return
global nbnodes
outFN = 'listLocalHddUse.out'
out = open(outFN, "w")
cmd2 = "rm -rf /local/%s*" %user
print cmd2
for inode in nodesList:
print "\tNode%03d"%(inode)
cmd = "ssh node%03d '%s'"%(inode, cmd2)
callOut = subprocess.call(cmd, shell=True)
if __name__ == "__main__":
nbnodes = 14
nodesList = range(1,nbnodes+1)
from optparse import OptionParser
parser = OptionParser()
parser.add_option("-u", "--user", dest="user", type="str",
default=os.getenv('USER'),
help="user name for listing or deletion. \"-u ''\" for all users")
parser.add_option("-F", "--force", dest="force",
default=False, action="store_true",
help="force deletion for multi users or nodes")
parser.add_option("-c", "--clean", dest="clean",
default=False, action="store_true")
parser.add_option("-n", "--nodes", dest="nodesList", type="int",
action="append", help="number of nodes to check (multiple nodes allowed: -n 1 -n 3 ...)")
(options, args) = parser.parse_args()
print "options.nodesList=",options.nodesList
if options.nodesList:
nodesList = options.nodesList
if options.clean == True:
if (options.user == '' or not options.nodesList)and options.force==False:
print "Error deleting for all users or on all nodes not allowed without --force option"
else:
delByUser(options.user, nodesList)
else:
listByUser(options.user, nodesList)