48 lines
1.0 KiB
Python
Executable File
48 lines
1.0 KiB
Python
Executable File
#!/usr/bin/python2
|
|
|
|
# This script inserts the mailman user name into the crontab entries after
|
|
# the 5 time/date fields so that it can be installed under /etc/cron.d
|
|
#
|
|
# usage: mailman-crontab-edit [-s src_file] [-u mailman_user] [-d dst_file]
|
|
# src_file defaults to stdin
|
|
# mailman_user defaults to mailman
|
|
# dst_file defaults to stdout
|
|
|
|
import sys, re, getopt
|
|
|
|
srcFile = None
|
|
dstFile = None
|
|
mmUser = None
|
|
|
|
opts, args = getopt.getopt(sys.argv[1:], "s:d:u:")
|
|
for o, a in opts:
|
|
if o == "-s":
|
|
srcFile = a
|
|
if o == "-d":
|
|
dstFile = a
|
|
if o == "-u":
|
|
mmUser = a
|
|
|
|
if srcFile:
|
|
inFD = open(srcFile)
|
|
else:
|
|
inFD = sys.stdin
|
|
|
|
if dstFile:
|
|
outFD = open(dstFile, mode='w')
|
|
else:
|
|
outFD = sys.stdout
|
|
|
|
if not mmUser:
|
|
mmUser = "mailman"
|
|
|
|
comment_re = re.compile(r'^\s*#')
|
|
time_date_re = re.compile(r'(^\s*(\S+\s+){5,5})')
|
|
|
|
for line in inFD:
|
|
if not comment_re.search(line):
|
|
match = time_date_re.search(line)
|
|
if match:
|
|
line = time_date_re.sub(r'\1 %s ' % mmUser, line)
|
|
print >>outFD, line,
|