Slection des switchs par regex

Envoi de nouveau firmware

darcs-hash:20051001142341-41617-46f43e68069c8789a015082b04ee5b6d38592951.gz
This commit is contained in:
pauget 2005-10-01 16:23:41 +02:00
parent 47b7c40d76
commit 3206707948

View file

@ -217,9 +217,9 @@ class hpswitch :
def __scp(self,destination,fichier) :
if self.__debug :
self.__logDest.write("HP DEBUG : scp(%s,%s,%s)\n" % (file, self.switch, destination))
if exists(file):
system('scp %s %s:%s' % (file, self.switch, destination))
self.__logDest.write("HP DEBUG : scp(%s,%s,%s)\n" % (fichier, self.switch, destination))
if exists(fichier):
system('scp %s %s:%s' % (fichier, self.switch, destination))
def update(self,file=None) :
""" Upload le fichier de config fourni
@ -379,32 +379,44 @@ class sw_chbre(hpswitch) :
self.nom(nom)
if __name__ == '__main__' :
import sys, getopt
import sys, getopt, sre
try :
options, arg = getopt.getopt(sys.argv[1:], 'hs:c:', [ 'help' ])
options, arg = getopt.getopt(sys.argv[1:], 'U:hc:', [ 'help' ])
except getopt.error, msg :
print msg
sys.exit(1)
switchs = []
cmds = []
firmware=''
for opt, val in options :
if opt == '-h' or opt=='--help' :
print "Usage : %s -c commande1 -c commande2... -s switch1 -s switch2..."
print "Envoi les commandes données au switchs dont le nom est fourni"
print "si aucun switch est founi envoi à tous les switchs"
print "Usage : %s [[-c commande1] -c commande2...] [-U firmware] regex "
print "Envoi les commandes données au switchs matchant la regex"
print "si aucune commande est founie lit l'entree standart"
print "L'envoi de firmware ne fait pas rebooter le switch"
sys.exit(0)
elif opt=='-s' :
switchs.append(val)
elif opt=='-c' :
cmds.append(val)
if not switchs : switchs = all_switchs()
if not cmds :
elif opt=='-U' :
firmware=val
# Quels switchs ?
switchs=[]
if arg :
re=sre.compile(arg[0])
for sw in all_switchs() :
if re.match(sw) :
switchs.append(sw)
if not switchs :
print "Aucun switch trouvé"
print "Note : il faut une _regex_ (!= wilcards au sens du shell)"
sys.exit(3)
if not cmds and not firmware :
cmds=map(str.strip,sys.stdin.readlines())
# Ce que l'on va faire
@ -412,18 +424,15 @@ if __name__ == '__main__' :
print "\nSwitchs : ", ' '.join(switchs)
print
sleep(2)
if arg :
print "ERREUR, argument invalide"
print 'Attention, ne pas oublier les " pour les commandes'
sys.exit(2)
raw_input("Appuyer sur entrée pour continuer")
for sw in switchs :
print sw
try:
# Au cas ou le switch ne répondrai pas
s = hpswitch(sw)
if firmware :
s.upgrade(firmware)
for cmd in cmds :
print s.send_cmd(cmd)
except :