diff --git a/gestion/tools/whokfet.py b/gestion/tools/whokfet.py new file mode 100755 index 00000000..ecb1c1ae --- /dev/null +++ b/gestion/tools/whokfet.py @@ -0,0 +1,61 @@ +#! /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 +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 socket import gethostname +from os import system +from subprocess import Popen, PIPE + + +def get_wifi_connected_client(): + x=Popen(["ssh","-T", "-i" , "/usr/scripts/gestion/clef-wifi-kfet","-l","root" ,"-x", "-o", "BatchMode=yes", "-o", + "ConnectTimeout=5", "-o", "StrictHostKeyChecking=no","valhalla.wifi", "wl assoclist"], stdout=PIPE) + clients=x.communicate()[0].split("\n") + macs=[] + for client in clients: + try: + macs.append(client.split(" ")[1]) + except IndexError: pass + return macs + +def liste_kfet(): + + sw = hpswitch('batb-0') + db = crans_ldap() + try: + macs = sw.show_prise_mac(47) #Devine quoi, c'est la prise de la kfet + # macs += sw.show_prise_mac(46) #Et la borne valhalla + macs +=get_wifi_connected_client() + 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 len(fm['machine']) != 0: + m = fm['machine'][0] + if len(fm['machineCrans']) == 0 and hasattr(m.proprietaire(),'droits') and len(m.proprietaire().droits()) != 0: + # 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() diff --git a/respbats/whokfet b/respbats/whokfet new file mode 100644 index 00000000..23011629 --- /dev/null +++ b/respbats/whokfet @@ -0,0 +1 @@ +sudo -u respbats /usr/scripts/gestion/tools/whokfet.py