From 74d05f3c82e71a8e9caf7c8431081268ed725236 Mon Sep 17 00:00:00 2001 From: Valentin Samir Date: Tue, 11 Sep 2012 04:40:10 +0200 Subject: [PATCH] =?UTF-8?q?[chambres=5Fvides]=20Script=20supprimant=20les?= =?UTF-8?q?=20machines=20des=20adh=C3=A9rants=20chambres=20invalides=20dep?= =?UTF-8?q?uis=20plus=20de=20n=20jours?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ignore-this: 65e5301410dcafc45c5f580367666cdf darcs-hash:20120911024010-3a55a-8ef9e12daffc3d7339a24d377c463c7b042f1573.gz --- gestion/chambres_vides.py | 54 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100755 gestion/chambres_vides.py diff --git a/gestion/chambres_vides.py b/gestion/chambres_vides.py new file mode 100755 index 00000000..ec4b2e6e --- /dev/null +++ b/gestion/chambres_vides.py @@ -0,0 +1,54 @@ +#!/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 "+------+-------------------+------+-----------------------------------------+" +