1 |
#!/usr/bin/python |
2 |
|
3 |
# This script inserts the mailman user name into the crontab entries after |
4 |
# the 5 time/date fields so that it can be installed under /etc/cron.d |
5 |
# |
6 |
# usage: mailman-crontab-edit [-s src_file] [-u mailman_user] [-d dst_file] |
7 |
# src_file defaults to stdin |
8 |
# mailman_user defaults to mailman |
9 |
# dst_file defaults to stdout |
10 |
|
11 |
import sys, re, getopt |
12 |
|
13 |
srcFile = None |
14 |
dstFile = None |
15 |
mmUser = None |
16 |
|
17 |
opts, args = getopt.getopt(sys.argv[1:], "s:d:u:") |
18 |
for o, a in opts: |
19 |
if o == "-s": |
20 |
srcFile = a |
21 |
if o == "-d": |
22 |
dstFile = a |
23 |
if o == "-u": |
24 |
mmUser = a |
25 |
|
26 |
if srcFile: |
27 |
inFD = open(srcFile) |
28 |
else: |
29 |
inFD = sys.stdin |
30 |
|
31 |
if dstFile: |
32 |
outFD = open(dstFile, mode='w') |
33 |
else: |
34 |
outFD = sys.stdout |
35 |
|
36 |
if not mmUser: |
37 |
mmUser = "mailman" |
38 |
|
39 |
comment_re = re.compile(r'^\s*#') |
40 |
time_date_re = re.compile(r'(^\s*(\S+\s+){5,5})') |
41 |
|
42 |
for line in inFD: |
43 |
if not comment_re.search(line): |
44 |
match = time_date_re.search(line) |
45 |
if match: |
46 |
line = time_date_re.sub(r'\1 %s ' % mmUser, line) |
47 |
print >>outFD, line, |