20.07.2020 - 1000 и 1 пользователь Zimbra 
Сегодня мы поделимся с вами одним интересным кейсом из нашей практики абонентского обслуживания серверной инфраструктуры одного клиента.
Процесс создания пользователей на любом из почтовых серверов является задачей достаточно тривиальной и не требующей большого количества времени в случае единовременного создания одной или нескольких учетных записей пользователей. Но что делать если необходимо добавить 100 или 1000 пользователей!? Создание одного пользователя в среднем занимает около 2 минут на учетную запись, если пользователей необходимо создать 1000, то на это 33 часа чистого рабочего времени или более 4 рабочих дней, что совершенно не приемлемо. В сегодняшней статье мы рассмотрим вопрос массового импорта пользователей почтового сервера Zimbra и то, как этот процесс можно автоматизировать.
Допустим для создания учетных записей пользователей мы имеем только список с фамилиями именами и отчествами сотрудников в электронном виде. Для примера я сгенерировал 14 случайных ФИО (рис. 1).
Имея подобный список нам необходимо каким-то образом получить логин и пароль для учетной записи, а также данные для заполнения профиля пользователя (фамилия, имя и отчество в отдельных столбцах).
Для формирования логинов пользователей необходимо транслировать ФИО сотрудников с русского языка на английский. Сделать это можно двумя способами: первый – воспользоваться любым онлайн-сервисом для трансляции с русского языка на английский, второй – создать пользовательскую функцию в Excel. Так как мы не ищем легких путей, и стараемся сделать процесс максимально автономным воспользуемся вторым способом.
Для создания пользовательской функции переходим в редактор Visual Basic (сочетание клавиш Alt + F11), затем создаем новый модуль и вставляем в него следующий код:
Function ТРАНСЛИТ(RusText As String) As String
Dim RusAlphabet As Variant 'массив из букв русского алфавита
RusAlphabet = Array("а", "б", "в", "г", "д", "е", "ё", "ж", "з", "и", "й", "к", "л", "м", "н", "о", "п", "р", "с", "т", "у", "ф", "х", "ц", "ч", "ш", "щ", "ъ", "ы", "ь", "э", "ю", "я")
Dim EngAlphabet As Variant 'массив из букв английского алфавита
EngAlphabet = Array("a", "b", "v", "g", "d", "e", "e", "zh", "z", "i", "i", "k", "l", "m", "n", "o", "p", "r", "s", "t", "u", "f", "kh", "tc", "ch", "sh", "shch", "", "y", "", "e", "iu", "ia")
Dim EngText As String, Letter As String, Flag As Boolean
For i = 1 To Len(RusText) 'цикл по всем символам русского текста
Letter = Mid(RusText, i, 1)
Flag = 0
For j = 0 To 32 'цикл по всем буквам русского алфавита
If RusAlphabet(j) = LCase(Letter) Then 'если символ из текста совпал с буквой из русского алфавита...
Flag = 1
If RusAlphabet(j) = Letter Then 'проверка на регистр (верхний или нижний)
EngText = EngText & EngAlphabet(j) '... то добавляем соответствующую букву из английского алфавита
Exit For
Else
EngText = EngText & UCase(EngAlphabet(j))
Exit For
End If
End If
Next j
If Flag = 0 Then EngText = EngText & Letter 'если символа из текста в алфавите нет (например, знаки препинания и т.п.), то добавляем символ без изменения
Next i
ТРАНСЛИТ = EngText
End Function
После чего сохраним изменения в файл с поддержкой макросов XLSM и применим созданную пользовательскую функцию в ячейке B2 растянув формулу автозаполнением до ячейки B15 (рис. 2)
Далее из полученного транслированных ФИО сотрудников необходимо сформировать логины для будущих учетных записей и здесь нам на помощь приходит формула которую добавляем в ячейку C2
=ЛЕВСИМВ(B2;НАЙТИ(" ";B2;1)-1)&""&ПСТР(B2;НАЙТИ(" ";B2;1)+1;1)&""&ПСТР(B2;НАЙТИ(" ";B2;НАЙТИ(" ";B2;1)+1)+1;1)&""
Так же растягиваем формулу до необходимой ячейки столбца (рис. 3).
Перейдем к формированию паролей для учетных записей. Пароль будет состоять из 8 символов, которые будут включать большие и маленькие латинские буквы, а также цифры. Для этой цели так же воспользуемся формулой.
=СИМВОЛ(СЛУЧМЕЖДУ(65;90))&СИМВОЛ(СЛУЧМЕЖДУ(97;122))&СЛУЧМЕЖДУ(0;9)&СИМВОЛ(СЛУЧМЕЖДУ(97;122))&СИМВОЛ(СЛУЧМЕЖДУ(97;122))&СИМВОЛ(СЛУЧМЕЖДУ(65;90))
На этом формирование учетных данных будущих пользователей почтового сервера завершено, но еще необходимо получить в отдельные столбцы фамилию, имя и отчество пользователей для заполнения данных профиля. Для этого есть два пути, воспользоваться формулами или всторенной функцией разбиения по столбцам. На этот раз выбираем более быстрый способ для экономии времени – разобьём текст по столбцам.
Для этого выделим все ячейки с полезными данными в столбце с ФИО сотрудников, перейдем в раздел меню «Данные» и выберем инструмент «Текст по столбцам» (Рис. 5).
После нажатия кнопки «Текст по столбцам» откроется соответствующий мастер настройки распределения текста. Настройка распределения текста в мастере производится в три шага. На первом шаге (рис. 6) указывается формат данных, в нашем случае выбираем пункт «с разделителями» и жмем далее.
На втором шаге выбираем необходимый символ разделитель (рис. 7), в нашем случае это пробел. Жмем далее для перехода к следующему шагу.
В заключительном третьем шаге выбираем необходимый формат данных столбца и диапазон размещения значений (рис. 8) и жмем «Готово».
Проверяем результат разбиения данных из столбца ФИО по отдельным столбцам (рис. 9).
Все необходимые данные подготовлены, теперь необходимо сформировать строку команды для импорта учётных записей пользователя через консоль. Команда импорта учетных данных имеет следующие формат:
zmprov createAccount <e-mail> <password> displayName <full name> givenName <first name> sn < last name> initials < patronymic> zimbraPasswordMustChange FALSE;
Сформируем команду при помощи формулы и подстановки значений из соответствующих ячеек (рис. 10) и заполним столбец данной формулой при помощи функции автозаполнения.
=СЦЕПИТЬ("zmprov createAccount ";C2;"@testmail.oneweb.pro ";D2; " displayName '";A2;"' givenName '";F2;"' sn '";E2;"' initials '";G2;"'"; " zimbraPasswordMustChange FALSE")
Скопируем все полученные строки столбца H за исключением строки заголовка в текстовый файл сохраним как zimbra-users.sh, после чего передадим полученный файл на почтовый сервер в удобную директорию, например - /var/ и выполним следующие команды в консоли:
cd /var/
chmod +x zimbra-users.sh
cd
su zimbra
sh /var/zimbra-users.sh
Дожидаемся окончания выполнения нашего скрипта и проверяем результат его выполнения в консоли администратора Zimbra (рис. 11).
Данный метод позволяет значительно сократить время на создание учетных записей пользователей почтового сервера Zimbra при необходимости единовременного заведения большого количества пользователей.
Обращайтесь в нашу компанию за внедрением почтового сервера на базе Zimbra!
Автор vk@oneweb.pro | Просмотров 1314
Комментарии (0)
Есть что сказать? Пишите нам ->