Автоматическое создание почтовых ящиков в Zimbra на Python

Материал из Mindsellers
Перейти к: навигация, поиск

Python

Свалилась задача: создать кучу почтовых ящиков на Zimbra. Исходные данные - только ФИО пользователей. Ящиков много, времени мало, поэтому написал скрипт

#!/usr/bin/python
# -*- coding: utf-8 -*-

import sys
from transliterate import translit, get_available_language_codes

#CONF
domain='yourdomain.ru'

def randpass(length=8):
   import random, string
   pwd =''.join([random.choice(string.ascii_letters + string.digits) for n in xrange(length)])
   return pwd

def make_email(userlist,csv,commands,domain):
    with open(userlist, 'r') as userlist, open(csv, 'w') as csv, open(commands, 'w') as commands:
	for line in userlist.read().splitlines():
	    line=line.decode('utf-8')
	    russian=line
	    line=translit(line,'ru',reversed=True).lower()
	    if len(line)>2:
		    email=line.split()[0]+'.'+line.split()[1][0]+line.split()[2][0]+'@'+domain
		    email=email.replace("'",'').encode('utf-8')
		    pwd='G'+randpass()+'4'
		    csv.write(russian.encode('utf-8')+';'+email+';'+pwd+'\n')
		    commands.write('zmprov ca '+email+' '+pwd+'\n')
if __name__=='__main__':
    if len(sys.argv) == 4:
	make_email(sys.argv[1],sys.argv[2],sys.argv[3],domain)
    else:
	print 'You need to specify 3 files as args: source, csv and commands!'

Смысл следующий: в качестве аргументов принимаем 3 файла - пофамильный список вида

Иванов Иван Иваныч
Петров Петр Петрович

а также файл, в который сложим csv с логинами/паролями и еще файл, куда запишем команды. Затем этот файл нужно будет просто запустить от имени пользователя zimbra на почтовом сервере.