[comptes_inactifs] Adaptation au nouveau timestamp

This commit is contained in:
Lucas Serrano 2013-06-21 15:08:26 +02:00
parent 98d347ccc1
commit 9447287a7a

View file

@ -35,8 +35,8 @@ from ldap_crans import crans_ldap
from config import ann_scol
db = crans_ldap()
from syslog import *
openlog('comptes_inactifs')
import syslog
syslog.openlog('comptes_inactifs')
def nb_mails_non_lus(login):
@ -58,7 +58,7 @@ def nb_mails_non_lus(login):
class ComptesInactifs(object):
# liste d'expressions régulières qui seront testées sur les lignes de log
# le premier groupe doit correspondre à la date, le second au login
re = [re.compile(r'^(\w+\s+\d+\s+\d+:\d+:\d+).*(?:'
compiled_regex = [re.compile(r'^(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}).*(?:'
r'dovecot.*Login: user=<|'
r'sshd.*Accepted.*for '
r')([^ >]+).*$'),
@ -95,8 +95,8 @@ class ComptesInactifs(object):
else:
# on loggue on espérant que les logs seront réinjectés
# plus tard
syslog("LDAP(lock): derniereConnexion=<%s>, login=<%s>" %
(strftime("%b %d %H:%M:%S", localtime(timestamp)), login))
syslog.syslog("LDAP(lock): derniereConnexion=<%s>, login=<%s>" %
(strftime("%Y-%m-%dT%H:%M:%S", localtime(timestamp)), login))
return total
def update(self, login, timestamp):
@ -117,18 +117,12 @@ class ComptesInactifs(object):
now = time() + 600
nombre = 0
for line in loglines:
for r in self.re:
for r in self.compiled_regex:
m = r.match(line)
if m: break
if not m: continue
date = list(strptime(m.group(1), "%b %d %H:%M:%S"))
date[0] = annee
date = list(strptime(m.group(1), "%Y-%m-%dT%H:%M:%S"))
t = mktime(date)
# les lignes de syslog n'indiquent pas l'année
# on suppose qu'une date dans le futur est en fait l'année dernière
if t > now:
date[0] = annee - 1
t = mktime(date)
self.update(m.group(2).lower(), t)
nombre += 1
return nombre
@ -139,8 +133,8 @@ class ComptesInactifs(object):
"""
parsed_lines = self.update_from_syslog(sys.stdin)
updated_entries = self.commit_to_ldap()
syslog("%(parsed_lines)s ligne(s) traitée(s)" % locals())
syslog("%(updated_entries)s entrée(s) mise(s) à jour dans la base LDAP" % locals())
syslog.syslog("%(parsed_lines)s ligne(s) traitée(s)" % locals())
syslog.syslog("%(updated_entries)s entrée(s) mise(s) à jour dans la base LDAP" % locals())
if parsed_lines == 0 or updated_entries == 0:
sys.stderr.write("""Erreur lors de la mise à jour de la base LDAP :
%(parsed_lines)s ligne(s) traitée(s)