Вверх

 
  • Комплексное ИТ обслуживание Вашего бизнеса 24 часа 7 дней в неделю!
  • IP телефония со знанием дела. Установка и настройка.
  • Поставки оборудования по выгодным ценам

20.07.2020 - 1000 и 1 пользователь Zimbra

Сегодня мы поделимся с вами одним интересным кейсом из нашей практики абонентского обслуживания серверной инфраструктуры одного клиента.

Процесс создания пользователей на любом из почтовых серверов является задачей достаточно тривиальной и не требующей большого количества времени в случае единовременного создания одной или нескольких учетных записей пользователей. Но что делать если необходимо добавить 100 или 1000 пользователей!? Создание одного пользователя в среднем занимает около 2 минут на учетную запись, если пользователей необходимо создать 1000, то на это 33 часа чистого рабочего времени или более 4 рабочих дней, что совершенно не приемлемо. В сегодняшней статье мы рассмотрим вопрос массового импорта пользователей почтового сервера Zimbra и то, как этот процесс можно автоматизировать.

Допустим для создания учетных записей пользователей мы имеем только список с фамилиями именами и отчествами сотрудников в электронном виде. Для примера я сгенерировал 14 случайных ФИО (рис. 1).

Рис. 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)

Рис. 2

Далее из полученного транслированных ФИО сотрудников необходимо сформировать логины для будущих учетных записей и здесь нам на помощь приходит формула которую добавляем в ячейку C2

=ЛЕВСИМВ(B2;НАЙТИ(" ";B2;1)-1)&""&ПСТР(B2;НАЙТИ(" ";B2;1)+1;1)&""&ПСТР(B2;НАЙТИ(" ";B2;НАЙТИ(" ";B2;1)+1)+1;1)&""

Так же растягиваем формулу до необходимой ячейки столбца (рис. 3).

Рис. 3

Перейдем к формированию паролей для учетных записей. Пароль будет состоять из 8 символов, которые будут включать большие и маленькие латинские буквы, а также цифры. Для этой цели так же воспользуемся формулой.

=СИМВОЛ(СЛУЧМЕЖДУ(65;90))&СИМВОЛ(СЛУЧМЕЖДУ(97;122))&СЛУЧМЕЖДУ(0;9)&СИМВОЛ(СЛУЧМЕЖДУ(97;122))&СИМВОЛ(СЛУЧМЕЖДУ(97;122))&СИМВОЛ(СЛУЧМЕЖДУ(65;90))

Рис. 4

На этом формирование учетных данных будущих пользователей почтового сервера завершено, но еще необходимо получить в отдельные столбцы фамилию, имя и отчество пользователей для заполнения данных профиля. Для этого есть два пути, воспользоваться формулами или всторенной функцией разбиения по столбцам. На этот раз выбираем более быстрый способ для экономии времени – разобьём текст по столбцам.

Для этого выделим все ячейки с полезными данными в столбце с ФИО сотрудников, перейдем в раздел меню «Данные» и выберем инструмент «Текст по столбцам» (Рис. 5).

Рис. 5

После нажатия кнопки «Текст по столбцам» откроется соответствующий мастер настройки распределения текста. Настройка распределения текста в мастере производится в три шага. На первом шаге (рис. 6) указывается формат данных, в нашем случае выбираем пункт «с разделителями» и жмем далее.

Рис. 6

На втором шаге выбираем необходимый символ разделитель (рис. 7), в нашем случае это пробел. Жмем далее для перехода к следующему шагу.

Рис. 7

В заключительном третьем шаге выбираем необходимый формат данных столбца и диапазон размещения значений (рис. 8) и жмем «Готово».

Рис. 8

Проверяем результат разбиения данных из столбца ФИО по отдельным столбцам (рис. 9).

Рис. 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")

Рис. 10

Скопируем все полученные строки столбца H за исключением строки заголовка в текстовый файл сохраним как zimbra-users.sh, после чего передадим полученный файл на почтовый сервер в удобную директорию, например - /var/ и выполним следующие команды в консоли:

cd /var/
chmod +x zimbra-users.sh
cd
su zimbra
sh /var/zimbra-users.sh

Дожидаемся окончания выполнения нашего скрипта и проверяем результат его выполнения в консоли администратора Zimbra (рис. 11).

Рис. 11

Данный метод позволяет значительно сократить время на создание учетных записей пользователей почтового сервера Zimbra при необходимости единовременного заведения большого количества пользователей.

Обращайтесь в нашу компанию за внедрением почтового сервера на базе Zimbra!

Комментарии (0)


Есть что сказать? Пишите нам ->

Новости IT рынка