#!/usr/bin/env python # -*- encoding: utf-8 -*- # Codé par b2moo, commenté par 20-100, cr{itiqu|on}é par Nit import datetime import time import re import ldap_crans conn = ldap_crans.CransLdap() year = 2012 #owi les dates hardcodées, c'est cool ! delai = 8 # jours avant d'être considéré déserteur # On récupère ceux qui n'ont pas payé cette année bad_boys_e_s = conn.search('chbre=????&paiement=%d&paiement!=%d' % (year-1,year))['adherent'] timeout = time.time() - 3600*24*delai template = u"| %4s | %-15s | %4s | %-38s |" header_printed = False for clandestin in bad_boys_e_s: # Look for last kickout for l in clandestin.historique(): # On récupère la date du dernier changement de chambre # (l'historique est enregistré par ordre chronologique) x = re.match("(.*),.* : chbre \(.*-> \?\?\?\?\)",l) if x <> None: d = x.group(1) # On lui accorde un délai if timeout < time.mktime(time.strptime(d,'%d/%m/%Y %H:%M')): continue for m in clandestin.machines(): # On n'a pas envie d'essayer de supprimer une machine qui a une blackliste if len(m.blacklist_actif()) > 0: continue # random formatage de chaîne de caractère # GRUIK if not header_printed: print "\nListe des machines supprimée pour chambre invalide depuis plus de %s jours :\n" % delai print "+------+-------------------+------+-----------------------------------------+" print template % ("aid", " ip", "mid", " hostname") print "+------+-------------------+------+-----------------------------------------+" header_printed = True print(template % (clandestin.id(), m.ip(), m.id(), m.nom())) m2 = conn.search('mid=%s' % m.id(),mode='w')['machine'][0] m2.delete('Adherent sans chambre valide depuis %d jours' % delai) if header_printed: print "+------+-------------------+------+-----------------------------------------+"