scripts/gestion/tools/whokfet.py
2013-02-10 02:45:45 +01:00

59 lines
2 KiB
Python
Executable file

#! /usr/bin/env python
# -*- coding: utf-8 -*-
'''Ce script permet de savoir s'il y a du monde à la kfet, filtre par membres actifs.'''
import sys
from socket import gethostname
if gethostname() != "zamok":
print "Merci d'executer ce script sur zamok."
sys.exit(1)
sys.path.append('/usr/scripts/gestion')
from ldap_crans import crans_ldap
from hptools import hpswitch, ConversationError
from affich_tools import coul, cprint
from whos import aff
from os import system
import xml.dom.minidom
def get_wifi_connected_client(host):
f = open('/usr/scripts/var/wifi_xml/%s.xml' % host,'r')
doc = xml.dom.minidom.parse(f)
f.close()
return [ mac.firstChild.nodeValue for mac in doc.getElementsByTagName('mac') ]
def liste_kfet():
sw = hpswitch('backbone.adm.crans.org')
db = crans_ldap()
try:
macs = sw.show_prise_mac(45) #Devine quoi, c'est la prise de la kfet
macs +=get_wifi_connected_client('diomede')
macs +=get_wifi_connected_client('nanom5')
except ConversationError:
cprint("Impossible de communiquer avec le switch !", 'rouge')
return
if macs:
machines = []
machines_crans = []
for mac in macs:
fm = db.search("mac=%s" % mac)
if fm['machine']:
m = fm['machine'][0]
if not fm['machineCrans'] and hasattr(m.proprietaire(),'droits') and m.proprietaire().droits():
# On filtre ceux qui ont des droits et qui sont pas des machines crans
machines.append(m)
else:
cprint("Machine inconnue: %s" % mac, 'rouge')
cprint('---=== Machines des membres actifs ===---', 'bleu')
aff(machines)
ttyfound = 1
print ''
if len(machines) != 0 or ttyfound == 0:
cprint("---=== Il y a du monde à la Kfet ! ===---", 'vert')
else:
cprint("---=== Il semble n'y avoir personne à la Kfet ... ===---", 'rouge')
if __name__ == '__main__':
liste_kfet()