60 lines
2 KiB
Python
Executable file
60 lines
2 KiB
Python
Executable file
#!/usr/bin/python
|
|
|
|
import datetime
|
|
import getpass
|
|
import optparse
|
|
import os
|
|
import socket
|
|
|
|
|
|
def read_loascertstatus():
|
|
# prodcertstatus --simple_output returns the #of seconds remaining before the
|
|
# cert is expired.
|
|
f = os.popen('prodcertstatus --simple_output | grep LOAS')
|
|
loas_expire = int(f.read().split(':')[1])
|
|
f.close()
|
|
return loas_expire
|
|
|
|
|
|
def main():
|
|
parser = optparse.OptionParser()
|
|
parser.add_option('--expire_within', help='Send email if cert will expire '
|
|
'within this time window in seconds.',
|
|
type='int', dest='expire_within', default=24*3600)
|
|
parser.add_option('--to', help='Comma separated Email notification TO '
|
|
'recipients.', dest='to', type='string', default='')
|
|
parser.add_option('--cc', help='Comma separated Email notification CC '
|
|
'recipients.', dest='cc', type='string', default='')
|
|
options, _ = parser.parse_args()
|
|
|
|
loas_expire = read_loascertstatus()
|
|
host = socket.gethostname()
|
|
if loas_expire < options.expire_within:
|
|
tt = datetime.timedelta(seconds=loas_expire)
|
|
body_text = ('prod access cert (LOAS) for %s will expire within %s on %s.'
|
|
% (getpass.getuser(), tt, host))
|
|
if not options.to:
|
|
print body_text
|
|
else:
|
|
email_to = ['%s@google.com' % to.strip() for to in options.to.split(',')]
|
|
|
|
p = os.popen('/usr/sbin/sendmail -t', 'w')
|
|
p.write('To: %s\n' % ','.join(email_to))
|
|
if options.cc:
|
|
email_cc = ['%s@google.com' % cc.strip()
|
|
for cc in options.cc.split(',')]
|
|
p.write('Cc: %s\n' % ','.join(email_cc))
|
|
|
|
p.write('Subject: Prod access cert (LOAS) for %s will expire soon on %s.'
|
|
'\n' % (getpass.getuser(), host))
|
|
p.write('Content-Type: text/plain')
|
|
p.write('\n') # blank line separating headers from body
|
|
p.write(body_text)
|
|
p.write('\n')
|
|
return_code = p.close()
|
|
if return_code is not None:
|
|
print 'Sendmail exit status %s' % return_code
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|