Не самая частая задача на устройствах MikroTik - одномоментное создание большого количества PPP (англ. Point-to-Point Protocol)  пользователей. Но когда она возникает, это превращается в очень скучное и нудное дело, что следует исправить. Предыдущую статью "MikroTik Скрипт: Уведомление о успешном входе на устройство или простой парсер журнала MikroTik" добавило в закладки в закладки 80+ пользователей, надеюсь и эта статья будет не менее полезна. - Что, мой мальчик, получается ли тебе собрать слово "Вечность"? - Трудно, моя госпожа, сложить слово "Вечность" из букв "Ж", "П", "О" и "А" - ответил Кай. Скриптовый язык MikroTik никак нельзя назвать полноценным языком программирования, поэтому слово "Вечность" будем собирать из того что есть, добавляя костыли и перематывая синей изолентой (ведь нет ничего долговечней, чем ...). Скрипт рассчитан на внимательных пользователей (регистр имени файла, структура файла) и не рассчитан на любознательных  пользователей вида "что будет, если вместо IP адреса поставить деление на ноль?". "Защита от дурака" отсутствует, чтобы искусственно не раздувать размер скрипта. Скачиваем шаблон CSV файла (FileTemplate.zip на GitHub); Заполняем шаблон (проверено Microsoft Excel); Загружаем файл на устройство MikroTik; Создаем скрипт импорта PPP пользователей; Включаем Безопасный режим MikroTik; Запускаем скрипт; Смотрим лог и список PPP пользователей; Убедившись, что все прошло хорошо - выключаем Безопасный режим MikroTik;  Пишем в комментарий к статье, что всё прошло хорошо (неплохо указать модель устройства, версию RouterOS).  Настоятельно рекомендую использовать шаблон файла с GitHub (в этом случае пропустите этот раздел). Но вы конечно можете создавать свой файл с любым расширением (в этом случае настраивайте :set Content [:pick $Content 62 $ContentLen]; вместо 62 выставляя свое значение от начала последовательности, в скрипте "отрезается" 62 символа - с учетом "шапки" таблицы в шаблоне). Как разделитель элементов используется символ ";", но вы можете указать свой символ. Как разделитель строк используется символ "\r", поэтому шаблон предоставлен в .zip формате с сохранением всех символов, т.к. множество редакторов, в том числе на GitHub отрезают "лишние" по их мнению символы. Укажите в переменной FileName название импортированного файла (рекомендую скопировать полное название из списка Files); Укажите в переменной Separator символ разделения полей в файле импорта. Например для региональных настроек ru_RU разделитель по умолчанию - точка с запятой, для en_EN локали - запятая. (Microsoft Excel 2019 RU, при сохранении "CSV UTF-8 (разделитель запятая)", принудительно устанавливает точку с запятой, как символ разделения полей). Проверка, что размер файла не превышен, запись в журнал устройства при превышении размера и остановка скрипта. Для RouterOS6 существует ограничение на размер переменной в 4КБ (у меня это было 80 пользователей, в RouterOS7 вроде как обещают снять ограничения); "Разбираем" файл, разбивая его на строки и запуская деление на элементы в каждой строке; Значение найденного элемента присваиваем соответствующему ключу массива ColumnsArray; Закончив разбор строки, формируем команду MikroTik для создания PPP пользователя; Если имя пользователя уже существует - пропускаем создание пользователя (вы можете самостоятельно добавить удаление пользователя, если требуется массовое пересоздание пользователей); Добавляем каждое из значений массива ColumnsArray в текст команды, если значение отсутствует, попускаем. Выполняем сформированную команду создания пользователя; Переходим к разбору следующей строки, если индекс последнего элемента строки меньше общего количества элементов в файле. Для запуска скрипта необходимы разрешения: read, write, test, policy.  Внимание: излишние права (выставляются по умолчанию новому скрипту) могут привести к появлению ошибки "could not run script ParseLogAccountEvents: not enough permissions" (RouterOS 6.48), устанавливайте только указанные в статье права. Скрипт намеренно сделан в упрощенном виде, избегая вложенных конструкций, затрудняющих чтение кода, но никто не мешает вам "дооптимизировать" скрипт в "одну" или минимальное количество строк. Если вам интересны другие мои скрипты MikroTik, их можно увидеть здесь или на GitHub. Добавление пользователей в файл-шаблон и работа скрипта. Если вы использовали скрипт, оставьте пожалуйста обратную связь "Работает. Модель устройства и версия RouterOS". Это поможет другим. Спасибо. Проверено: MikroTik hAP ac lite (RouterBOARD 952Ui-5ac2nD), RouterOS 6.47.8 (stable). UPD: 18.12.20 - в скрипт добавлена переменная Separator (см. "Логика скрипта"); UPD: 19.12.20 - добавлено видео работы скрипта.