[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 from config import ann_scol
db = crans_ldap() db = crans_ldap()
from syslog import * import syslog
openlog('comptes_inactifs') syslog.openlog('comptes_inactifs')
def nb_mails_non_lus(login): def nb_mails_non_lus(login):
@ -58,7 +58,7 @@ def nb_mails_non_lus(login):
class ComptesInactifs(object): class ComptesInactifs(object):
# liste d'expressions régulières qui seront testées sur les lignes de log # 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 # 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'dovecot.*Login: user=<|'
r'sshd.*Accepted.*for ' r'sshd.*Accepted.*for '
r')([^ >]+).*$'), r')([^ >]+).*$'),
@ -95,8 +95,8 @@ class ComptesInactifs(object):
else: else:
# on loggue on espérant que les logs seront réinjectés # on loggue on espérant que les logs seront réinjectés
# plus tard # plus tard
syslog("LDAP(lock): derniereConnexion=<%s>, login=<%s>" % syslog.syslog("LDAP(lock): derniereConnexion=<%s>, login=<%s>" %
(strftime("%b %d %H:%M:%S", localtime(timestamp)), login)) (strftime("%Y-%m-%dT%H:%M:%S", localtime(timestamp)), login))
return total return total
def update(self, login, timestamp): def update(self, login, timestamp):
@ -117,17 +117,11 @@ class ComptesInactifs(object):
now = time() + 600 now = time() + 600
nombre = 0 nombre = 0
for line in loglines: for line in loglines:
for r in self.re: for r in self.compiled_regex:
m = r.match(line) m = r.match(line)
if m: break if m: break
if not m: continue if not m: continue
date = list(strptime(m.group(1), "%b %d %H:%M:%S")) date = list(strptime(m.group(1), "%Y-%m-%dT%H:%M:%S"))
date[0] = annee
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) t = mktime(date)
self.update(m.group(2).lower(), t) self.update(m.group(2).lower(), t)
nombre += 1 nombre += 1
@ -139,8 +133,8 @@ class ComptesInactifs(object):
""" """
parsed_lines = self.update_from_syslog(sys.stdin) parsed_lines = self.update_from_syslog(sys.stdin)
updated_entries = self.commit_to_ldap() updated_entries = self.commit_to_ldap()
syslog("%(parsed_lines)s ligne(s) traitée(s)" % locals()) syslog.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("%(updated_entries)s entrée(s) mise(s) à jour dans la base LDAP" % locals())
if parsed_lines == 0 or updated_entries == 0: if parsed_lines == 0 or updated_entries == 0:
sys.stderr.write("""Erreur lors de la mise à jour de la base LDAP : sys.stderr.write("""Erreur lors de la mise à jour de la base LDAP :
%(parsed_lines)s ligne(s) traitée(s) %(parsed_lines)s ligne(s) traitée(s)