Proyecto

General

Perfil

« Anterior | Siguiente » 

Revisión 337

Añadido por Manu Mora Gordillo hace casi 13 años

Estadisticas, menu ayuda

Ver diferencias:

scripts/nfs/puppetlastgroups
from datetime import datetime, timedelta
total_count=0
total_certs=0
total_elements=0
total_withoutCert=0
total_studentsLaptopsCerts=0
total_studentsLaptopsWithoutCerts=0
all_hosts=[]
all_certs=[]
isPrinting=True
onlyHead=False
def humanize(delta):
days = delta.days
......
# Muestra en pantalla la info de la sincronizacion con codigo de colores
def printtimes(times):
global all_hosts
global all_hosts, isPrinting, onlyHead
RED = '\033[91m'
GREEN = '\033[92m'
......
RESET = '\033[0m'
for time in reversed(sorted(times, key=lambda x: x[2])):
all_hosts.append(time[1])
if time[2] < timedelta(hours=24):
print GREEN, "%10s ago: %s" % (time[0], time[1]), RESET
elif time[2] < timedelta(hours=239):
print ORANGE, "%10s ago: %s" % (time[0], time[1]), RESET
else:
print RED, "%10s ago: %s" % (time[0], time[1]), RESET
if not onlyHead:
if time[2] < timedelta(hours=24) and isPrinting:
print GREEN, "%10s ago: %s" % (time[0], time[1]), RESET
elif time[2] < timedelta(hours=239) and isPrinting:
print ORANGE, "%10s ago: %s" % (time[0], time[1]), RESET
elif isPrinting:
print RED, "%10s ago: %s" % (time[0], time[1]), RESET
def formatList(search):
from operator import itemgetter, attrgetter
data=[]
......
# Rutina principal
def puppetlast(times,search):
import pdb
global total_count
global total_certs, total_elements, total_withoutCert, isPrinting
RED = '\033[91m'
RESET = '\033[0m'
......
without_cert.append(a)
if len(times_temp)>1:
print "\n- "+curso+" ("+str(len(alumnos))+" elementos) ("+str(len(times_temp))+" certificados)"
if isPrinting:
print "\n- "+curso+" ("+str(len(alumnos))+" elementos) ("+str(len(times_temp))+" certificados)"
if len(without_cert)>1:
for w in without_cert:
if w!="":
if w!="" and isPrinting and not onlyHead:
print RED, "Sin certificado: "+w, RESET
total_count=total_count+len(times_temp)
total_certs=total_certs+len(times_temp)
total_withoutCert=total_withoutCert+len(without_cert)
total_elements=total_elements+len(alumnos)
printtimes(times_temp)
def ldapSearch(baseDN,filter,retrieveAttributes):
......
return { 'onlyInList1':onlyInList1, 'onlyInList2':onlyInList2, 'inTwoLists':inTwoLists }
grupo=""
t=gettimes()
def printHelp():
print "Modo de empleo: puppetlastgroups [OPCION] [AULA]\n"
print " -g todos los grupos"
print " -g 1ESOA un grupo concreto"
print " -s servidores de aula"
print " -p portatiles de profesores"
print " -w workstations"
print " -n no registrados en LDAP"
print " -a todo"
print " -e estadisticas"
print " --help ayuda"
if len (sys.argv)==2:
grupo=sys.argv[1]
filter="(&(groupType=school_class)(cn="+grupo+"))"
else:
filter="(&(groupType=school_class))"
def printGroups():
global t
if len (sys.argv)==3:
filter="(&(groupType=school_class)(cn="+sys.argv[2]+"))"
else:
filter="(&(groupType=school_class))"
search = ldapSearch("ou=Group",filter,["memberUid"])
search = ldapSearch("ou=Group",filter,["memberUid"])
data = formatList(search)
puppetlast(t,data)
data = formatList(search)
puppetlast(t,data)
if grupo=="":
# Servidores de aula
def printLTSPServers():
global t
search = ldapSearch("cn=ltsp-server-hosts, ou=Netgroup","cn=*",["nisNetgroupTriple"])
data = formatOtherList(search,"LTSP-Servers")
puppetlast(t,data)
# Portatiles de profesores. Debera tener la rama Netgroup->laptop-hosts
def printWorkstations():
global t
try:
search = ldapSearch("cn=workstation-hosts, ou=Netgroup","cn=*",["nisNetgroupTriple"])
data = formatOtherList(search,"Workstations")
......
except:
pass
# Portatiles de profesores. Debera tener la rama Netgroup->laptop-hosts
# Portatiles de profesores. Debera tener la rama Netgroup->laptop-hosts
def printTeacherLaptops():
global t
try:
search = ldapSearch("cn=laptop-hosts, ou=Netgroup","cn=*",["nisNetgroupTriple"])
data = formatOtherList(search,"Portatiles profesores")
......
except:
pass
# Equipos desconocidos
cmp=cmpLists(all_hosts, all_certs)
list=[]
for c in cmp["onlyInList2"]:
list.append(c.split(".")[0])
# Equipos desconocidos
def printUnknown():
global all_certs, all_hosts, t
comp=cmpLists(all_hosts, all_certs)
l=[]
for c in comp["onlyInList2"]:
l.append(c.split(".")[0])
unknown=[]
unknown.append(("No registrados en LDAP (con certificado)",list))
unknown.append(("No registrados en LDAP (con certificado)",l))
puppetlast(t,unknown)
print "\nTotal certificados: "+str(total_count)
def printStatistics():
global total_certs, total_elements, total_withoutCert, total_studentsLaptopsCerts, studentsLaptopsWithoutCerts
print "\n############################################################"
if total_studentsLaptopsCerts!=0:
print "\nPortatiles alumnos:"
print " - Total certificados: "+str(total_studentsLaptopsCerts)
print " - Total sin certificado: "+str(total_studentsLaptopsWithoutCerts)
print "\nTotal certificados: "+str(total_certs)
print "Total sin certificado: "+str(total_withoutCert)
print "Total elementos: "+str(total_elements)+"\n"
t=gettimes()
if len (sys.argv)<2:
printHelp()
exit()
if sys.argv[1] == "-g":
printGroups()
printStatistics()
elif sys.argv[1] == "-s":
printLTSPServers()
printStatistics()
elif sys.argv[1] == "-w":
printWorkstations()
printStatistics()
elif sys.argv[1] == "-p":
printTeacherLaptops()
printStatistics()
elif sys.argv[1] == "-n":
isPrinting=False
printGroups()
printLTSPServers()
printWorkstations()
printTeacherLaptops()
isPrinting=True
printUnknown()
elif sys.argv[1] == "-a":
printGroups()
printLTSPServers()
printWorkstations()
printTeacherLaptops()
printUnknown()
printStatistics()
elif sys.argv[1] == "-e":
onlyHead=True
printGroups()
total_studentsLaptopsCerts=total_certs
total_studentsLaptopsWithoutCerts=total_withoutCert
printLTSPServers()
printWorkstations()
printTeacherLaptops()
printUnknown()
printStatistics()
elif sys.argv[1] == "--help":
printHelp()
exit()
else:
printHelp()
exit()

Exportar a: Unified diff