[gestion/whokfet] whokfet
whokfet permet aux membres actifs de savoir si des membres actifs (et uniquement actifs) sont à la kfet en ce moment (sur le switch ou sur la borne). À utiliser sur zamok. Nécessite gestion/clef-wifi-kfet pour se connecter sur valhalla darcs-hash:20111106214221-28565-2c306786123d84fdf2af145a5f55362a32ca39c5.gz
This commit is contained in:
parent
1cb61beb32
commit
8b91831247
2 changed files with 62 additions and 0 deletions
61
gestion/tools/whokfet.py
Executable file
61
gestion/tools/whokfet.py
Executable file
|
@ -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()
|
1
respbats/whokfet
Normal file
1
respbats/whokfet
Normal file
|
@ -0,0 +1 @@
|
||||||
|
sudo -u respbats /usr/scripts/gestion/tools/whokfet.py
|
Loading…
Add table
Add a link
Reference in a new issue