#! /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()