diff --git a/bcfg2/bcfg2-report.py b/bcfg2/bcfg2-report.py new file mode 100755 index 00000000..d4870339 --- /dev/null +++ b/bcfg2/bcfg2-report.py @@ -0,0 +1,44 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +""" Envoie un mail avec la liste des serveurs qui ne sont pas synchro avec bcfg2. + + N'affiche que ceux qui datent d'aujourd'hui, hier ou avant-hier + (pour ne pas avoir les vieux serveurs qui traînent). + + """ + +from __future__ import print_function + +import sys +import time +import datetime +import subprocess + +unjour = datetime.timedelta(1) + +aujourdhui = datetime.date(*time.localtime()[:3]) +hier = aujourdhui - unjour +avanthier = aujourdhui - unjour*2 + +def get_dirty(): + """Récupère les hosts dirty récents.""" + proc = subprocess.Popen(["/usr/sbin/bcfg2-reports", "-d"], stdout=subprocess.PIPE, stderr=subprocess.PIPE) # | sort + out, err = proc.communicate() + if err: + print(err, file=sys.stderr) + if proc.returncode != 0: + return (False, out) + out = [l for l in out.split("\n") if any([date.strftime("%F") in l for date in [aujourdhui, hier, avanthier]])] + out.sort() + return True, "\n".join(out) + +if __name__ == "__main__": + success, hosts = get_dirty() + if not success: + print(hosts, file=sys.stderr) + exit(1) + debug = "--debug" in sys.argv + sys.path.append("/usr/scripts/") + import utils.sendmail + utils.sendmail.sendmail("root@crans.org", "roots@crans.org", u"Serveurs non synchronisés avec bcfg2", hosts, more_headers={"X-Mailer" : "bcfg2-reports"}, debug=debug)