|
1
|
|
|
2
|
|
|
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
|
|
|
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
|
|
|
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
|
|
|
28
|
continue
|
|
29
|
|
|
30
|
|
|
31
|
|
|
32
|
|
|
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
|
|
|
45
|
mail_server.sendmail('Support GridUNESP <support@ncc.unesp.br>', email, mail.as_string())
|
|
46
|
|