You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

112 lines
3.4 KiB

#!/usr/bin/python3
# coding=utf-8
import csv
import sys
import MySQLdb
dbconn = {'host': '10.3.11.226',
'user': 'readonlyuser',
'pass': 'Readonly@2006',
'base': 'techgrow'}
sql = 'select * from LDAP'
ad_groups_users = ['vpn-users', 'gogs']
ad_groups_bitrix = ['vpn-web-vpn', 'gogs']
ad_groups_1c = ['vpn-1c-vpn', 'Domain Users']
ad_group_xserv = 'ics'
ad_group_rdp = 'Пользователи удаленного рабочего стола'
def mysql_reader(dbconn, sql):
data = tuple
err = False
try:
conn = MySQLdb.connect(host=dbconn['host'], user=dbconn['user'],
passwd=dbconn['pass'], db=dbconn['base'], charset="utf8")
cur = conn.cursor(MySQLdb.cursors.DictCursor)
cur.execute(sql)
data = cur.fetchall()
cur.close()
except MySQLdb.Error as exc:
print("Connection error: {}".format(err))
conn.close()
err = exc
else:
conn.commit()
conn.close()
return data, err
def users_make_zayavka(users):
res = {}
for i in users:
usrname = str(i['LoginEmail']).split('@')[0]
if usrname in res:
continue
enabled = False
pwchange = False
toremove = False
res[usrname] = {}
# преобразуем флаги в удобную форму
if i['Activ'] == 'Y':
enabled = True
if i['Changes'] == 'Y':
pwchange = True
if i['Delete'] == 'Y':
toremove = True
# размечаем группы, в которых должен быть пользователь
memberof = []
if str(i['Otdel']) == 'Users':
memberof = ad_groups_users[:]
elif str(i['Otdel']) == '1C':
memberof = ad_groups_1c[:]
elif str(i['Otdel']) == 'Bitrix':
memberof = ad_groups_bitrix[:]
if str(i['XServ']) == '1':
memberof.append(ad_group_xserv)
if str(i['RDP']) == '1':
memberof.append(ad_group_rdp)
# собственно добавляем в мапу
res[usrname] = {'id': str(i['ID']),
'samAccountName': usrname,
'memberOf': memberof,
'usrPass': str(i['Pass']),
'groupSet': str(i['Otdel']),
'enabled': enabled,
'pwChange': pwchange,
'toRemove': toremove,
'email': i['LoginEmail']
}
return res
def mailboxes(data):
mboxes = []
for user in data:
domain = user['LoginEmail'].split('@')[1]
name = user['LoginEmail'].split('@')[0]
mbox = ["Администратор", domain, name, user['Pass'], user['Changes'], user['Delete']]
mboxes.append(mbox)
return mboxes
def main():
data, err = mysql_reader(dbconn, sql)
if len(sys.argv) == 1:
if not err:
users = users_make_zayavka(data)
x = ''
for user in users:
print(user, users[user])
input(x)
else:
print(err)
else:
csvFile = sys.argv[1];
with open(csvFile, 'w') as f:
write = csv.writer(f, quoting=csv.QUOTE_ALL)
write.writerows(mailboxes(data))
if __name__ == '__main__':
main()

Powered by TurnKey Linux.