Pièce jointe « mailWarn_dirtyEtc.py »
Téléchargement 1 #! /usr/bin/env python
2 # -*- coding: iso-8859-1 -*-
3
4 # 08/06/2004 Fred
5
6 import smtplib, os, time, sys, string
7
8 mailhost = 'zamok.crans.org'
9 mailport = 25
10
11 # Où regarder (reps séparés par des espaces) ?
12 checks = '/etc'
13
14 params = { 'from_name' : 'Nectaris CVS' ,
15 'from_addr' : 'root@crans.org' ,
16 'to' : 'fred@crans.org' ,
17 'subject' : 'CVS Status'}
18
19 # Récupération de l'état des fichiers
20 etat = os.popen('/usr/bin/cvs -q -d /var/cvsroot status %s' % checks )
21
22
23 # Valeurs initiales
24 resume = ''
25 details = ''
26 line = etat.readline()
27
28 # Tri
29 while line :
30 # Il nous faut le début de la description d'un fichier
31 if line != '===================================================================\n' :
32 line = etat.readline()
33 continue
34
35 line = string.strip(etat.readline())
36 # On doit alors avoir une ligne du type :
37 # 'File: truc \tStatus: status'
38 l = string.split(line)
39 if l[0] != 'File:' and l[2] != 'Status:' :
40 continue
41
42 if l[3] != 'Up-to-date' :
43 resume += line
44 resume +='\n'
45
46 while line and line != '===================================================================\n':
47 if l[3] != 'Up-to-date' : details += line
48 line = etat.readline()
49
50 if l[3] != 'Up-to-date' : details += line
51
52 if not resume :
53 # Tout est à jour
54 sys.exit(0)
55
56 # Préparation du mail
57 params['date'] = time.strftime('%a, %d %b %Y %H:%M:%S +0000', time.gmtime(time.time()))
58
59 mail = 'From: %(from_name)s <%(from_addr)s>\n\
60 To: %(to)s\n\
61 Subject: %(subject)s\n\
62 X-CVSinfo: CRANS\n\
63 Date: %(date)s\n\
64 X-Mailer: Python CVS check (by Fred)\n\n\
65 Liste des fichiers non synchros\n\
66 ===============================\n' % params
67 mail += resume
68 mail += '\n\n'
69 mail += 'Détails\n=======\n'
70 mail += details
71
72 # Envoi du mail
73 conn = smtplib.SMTP()
74 conn.connect(mailhost, mailport)
75 conn.sendmail(params['from_addr'], params['to'], mail)
76 conn.close()
Fichiers joints
Pour vous référer aux pièces jointes d'une page, utilisez attachment:filename, comme indiqué ci-dessous dans la liste de fichiers. N'utilisez pas l'URL du lien [get], car elle peut changer et donc être facilement cassée.Vous n'êtes pas autorisé à joindre un fichier à cette page.