logins-cleanup.py

Gabriel Winckler, 26 Sep 2011 19:08

Download (2 KB)

 
1
#!/usr/bin/env python
2
# -*- coding: utf-8 -*-
3

    
4
import ldap
5
import re
6
import smtplib
7
from email.mime.text import MIMEText
8
from email.Header import Header
9

    
10
mail_server = smtplib.SMTP('mail.ncc.unesp.br')
11
#mail_server = smtplib.SMTP('localhost')
12

    
13
l = ldap.initialize('ldap://ldap.ncc.unesp.br')
14
groups = l.search_s('ou=research,ou=groups,dc=ncc,dc=unesp,dc=br', ldap.SCOPE_ONELEVEL, '(objectClass=posixGroup)', ['cn','memberUid','description'])
15

    
16
for g in groups:
17
    # The old format in LDAP: "name" <email>
18
    name = re.findall('\"(.*)\" <.*>', g[1]['description'][0])[0]
19
    email = l.search_s(g[0], ldap.SCOPE_ONELEVEL, '(cn=coordinator)', ['mail'])[0][1]['mail'][0]
20

    
21
    users = []
22
    if g[1].has_key('memberUid'):
23
        for u in g[1]['memberUid']:
24
            user = l.search_s('ou=people,dc=ncc,dc=unesp,dc=br', ldap.SCOPE_ONELEVEL, '(uid=%s)' % u, ['cn','mail','uid'])[0][1]
25
            users.append((user['cn'][0].decode('utf-8'), user['uid'][0], user['mail'][0].decode('utf-8')))
26
    else:
27
        #Project empty
28
        continue
29

    
30
    #print "Project: %s <%s>" % (name, email)
31
    #for i in users:
32
    #    print "  %s  (%s) <%s>" % i
33

    
34
    msg = u"Prezado Coordenador,\n\n Visando a segurança de nossos sistemas pedimos que revise a lista dos usuários que estão cadastrados em seu projeto. Somente responda a esse email se observar que algum usuário deva ser removido, informando a lista dos usuários que devem ser *descadastrados*.\n\n Atenciosamente,\n  Equipe Técnica GridUNESP\n\n\n"
35
    for i in users:
36
        msg += u"  %s (%s) <%s>\n" % i
37
 
38
    print "Sending email to project %s" % name 
39
    mail = MIMEText(msg.encode('UTF-8'), 'plain', 'UTF-8')
40
    mail['Subject'] = Header('Atualização do cadastro dos usuários', 'UTF-8')
41
    mail['From'] = 'Support GridUNESP <support@ncc.unesp.br>'
42
    mail['To'] = email
43

    
44
    #mail_server.sendmail('Support GridUNESP <support@ncc.unesp.br>', 'winckler@ncc.unesp.br', mail.as_string())
45
    mail_server.sendmail('Support GridUNESP <support@ncc.unesp.br>', email, mail.as_string())
46