From 4916f0ab9935c511baa84d613f23dce1ca3340af Mon Sep 17 00:00:00 2001 From: glondu Date: Sun, 24 Sep 2006 23:18:37 +0200 Subject: [PATCH] a fait 6 mois qu'on surveille les logs de connexion ; dornavant, on utilise la date d'inscription par dfaut pour ceux qui ne se sont jamais connects. darcs-hash:20060924211837-68412-80588b1599b08f17d341240274efb6e86e879bf5.gz --- surveillance/comptes_inactifs.py | 34 +++++++++++++++----------------- 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/surveillance/comptes_inactifs.py b/surveillance/comptes_inactifs.py index d1c74c95..fd180bba 100755 --- a/surveillance/comptes_inactifs.py +++ b/surveillance/comptes_inactifs.py @@ -28,9 +28,6 @@ mail_sender = u"Comptes inactifs " template_path = '/usr/scripts/templates/comptes_inactifs.%d.txt' actions = ('log', 'dump', 'summary', 'spam') -# Date de début d'analyse des logs : 19/03/2006 05:27 GMT -oldest_log = 1142746043 - sys.path.append('/usr/scripts/gestion') from affich_tools import tableau, cprint from email_tools import send_email, parse_mail_template @@ -101,7 +98,7 @@ class ComptesInactifs: syslog("LDAP(lock): derniereConnexion=<%s>, login=<%s>" % (strftime("%b %d %H:%M:%S", localtime(timestamp)), login)) return total - + def update(self, login, timestamp): """ Met à jour l'entrée correspondant au login donné. @@ -110,7 +107,7 @@ class ComptesInactifs: timestamp = int(timestamp) if not dic.has_key(login) or timestamp > dic[login]: dic[login] = timestamp - + def update_from_syslog(self, loglines): """ Met à jour le dico avec les lignes de syslog données. @@ -135,7 +132,7 @@ class ComptesInactifs: self.update(m.group(2).lower(), t) nombre += 1 return nombre - + def do_log(self): """ Lit des lignes de log sur l'entrée std et met à jour la base LDAP. @@ -171,7 +168,11 @@ class ComptesInactifs: pour être sûr). """ limit = int(time()) - since - return self.search('|(!(derniereConnexion=*))(derniereConnexion<=%d)' % limit) + liste = self.search("derniereConnexion<=%d" % limit) + for x in self.search("!(derniereConnexion=*)"): + if x.dateInscription() <= limit: + liste.append(x) + return liste def do_summary(self): """ @@ -192,8 +193,6 @@ L - F : existence d'un .forward - M : existence de mails non lus -L'analyse des logs remonte au %(oldest)s. - -- comptes_inactifs.py """ @@ -203,7 +202,7 @@ comptes_inactifs.py liste = self.get_idle_accounts() # on trie par login liste.sort(lambda x, y: cmp(x.compte(), y.compte())) - + for a in liste: login = a.compte() date = a.derniereConnexion() @@ -228,8 +227,7 @@ comptes_inactifs.py inscrits = tableau(inscrits, titres, largeurs, alignements) anciens_total = len(anciens) anciens = tableau(anciens, titres, largeurs, alignements) - oldest = strftime(u'%d/%m/%Y %H:%M', localtime(oldest_log)) - + send_email(mail_sender, mail_report, u'Comptes inactifs', @@ -255,7 +253,7 @@ comptes_inactifs.py login = a.compte() mail = nb_mails_non_lus(login) nom = a.Nom() - date = a.derniereConnexion() or oldest_log + date = a.derniereConnexion() or a.dateInscription() date = strftime(u'%d/%m/%Y %H:%M', localtime(date)) i = 0 # est-ce un membre inscrit ? @@ -275,7 +273,7 @@ comptes_inactifs.py if debug: sujet = u"[Message de test %d] %s" % (i, sujet) if stats[i] > 1: continue - + send_email(mail_sender, u"%s <%s@crans.org>" % (nom, login), sujet, @@ -309,9 +307,9 @@ comptes_inactifs.py recapitulatif, server = smtp, debug = debug) - + smtp.quit() - + def usage(): """ Afficher l'aide. """ @@ -324,7 +322,7 @@ def usage(): if __name__ == '__main__': args = sys.argv[1:] - + if len(args) == 0: usage() sys.exit(0) @@ -334,7 +332,7 @@ if __name__ == '__main__': sys.stderr.write("Commande incorrecte : %s\n" % commande) usage() sys.exit(2) - + ci = ComptesInactifs() for commande in args: eval('ci.do_%s()' % commande)