[bcfg2 reports] Renommage + on envoie le mail que si --mail

On ne peut pas pas importer un script qui a un - dans son nom !
This commit is contained in:
Vincent Le Gallic 2013-07-24 18:40:01 +02:00
parent 9c110bfb89
commit 705bc1d4af

49
bcfg2/bcfg2_report.py Executable file
View file

@ -0,0 +1,49 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
""" Envoie un mail avec la liste des serveurs qui ne sont pas synchro avec bcfg2.
Si appelé sans l'option ``--mail``, affiche le résultat sur stdout.
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
if "--mail" 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)
else:
print(hosts)