MikroTik Script: Crear usuarios de VPN de forma masiva a partir de un archivo

La creación de muchos usuarios de VPN a la vez es una tarea poco común de MikroTik, pero se encuentra en la práctica de un administrador de red. El script crea muchos usuarios PPP (Protocolo punto a punto) a partir de un archivo de plantilla CSV.

Los archivos CSV (del inglés comma-separated values) son un tipo de documento en formato abierto sencillo para representar datos en forma de tabla, en las que las columnas se separan por comas (o punto y coma en donde la coma es el separador decimal como en Chile, Perú, Argentina, España, Brasil, entre otros) y las filas por saltos de línea.

Wikipedia
MikroTik Script: Crear usuarios de VPN de forma masiva a partir de un archivo
Mensajes de script CreatePPPUsers en el registro del dispositivo MikroTik

Contenido

  1. Secuencia de acciones planificada
  2. Crear guion
  3. Código de secuencia de comandos
  4. Video: trabajo de guion
  5. Solución de problemas

Artículo en otros idiomas:
?? – MikroTik Script: Bulk create VPN users from a file
?? – MikroTik Скрипт: Массовое создание VPN пользователей из файла
?? – MikroTik Script: Créer en masse des utilisateurs VPN à partir d’un fichier
?? – MikroTik-Script: Massenerstellung von VPN-Benutzern aus einer Datei
?? – MikroTik-script: Maak in bulk VPN-gebruikers aan op basis van een bestand

Secuencia de acciones planificada

  1. Descargue la plantilla de archivo CSV (FileTemplate.zip en GitHub);
  2. Agregue usuarios al archivo (verificado por Microsoft Excel);
  3. Descargue el archivo en el dispositivo MikroTik;
  4. Cree un script para importar usuarios PPP;
  5. Active el modo seguro de MikroTik;
  6. Ejecute el script;
  7. Comprobación del log dispositivo y la lista de usuarios PPP;
  8. Si todo está bien, apague MikroTik Safe Mode;
  9. Escribe un comentario al artículo que todo salió bien (escribe el modelo del dispositivo y la versión de RouterOS).
Descargue una plantilla de archivo para crear usuarios de VPN, desde GitHub

Crear guion

Se requieren los siguientes permisos para ejecutar el script: read, write, test, policy.

[System] -> [Scripts] -> [+] -> [Name: CreatePPPUsers] -> [Policy: read, write, test, policy]

Antes de ejecutar el script, recomiendo activar el modo seguro de MikroTik y desactivar el modo seguro, asegurándome de que el script funcione correctamente – se crearon usuarios de VPN.

Código de secuencia de comandos

# Name: CreatePPPUsers v1.1
# Description: Bulk create VPN users from a file
# Author: Yun Sergey, MHelp.pro 2020
# License: GPL-3.0 License
# Description, purpose and questions: https://mhelp.pro/mikrotik-script-bulk-create-vpn-users-from-a-file/
# More scripts Mikrotik: https://mhelp.pro/tag/mikrotik/

:local FileName "FileTemplate.csv";
:local Separator ",";

:log warning "Script CreatePPPUsers: running. Import from file: $FileName";

:if ([/file get $FileName size]  > 4096) do={
    :log error "Error run script CreatePPPUsers: file size exceeded 4 KB (size constraint of a variable in Router OS 6). Split the file $FileName into several parts.";
    :error "File size exceeded 4 KB. Stop script."
};

:local Content [/file get $FileName contents];
:local ContentLen [:len $Content];
:set Content [:pick $Content 62 $ContentLen];

:local StartCursor 0;
:local EndCursor;
:local LineEndCursor;

:while ($StartCursor < [:len $Content]) do={

    :set LineEndCursor [:find $Content "\r" $StartCursor];

    :local  Cont;

    :local ColumnsArray { "01Name"=""; "02Password"=""; "03Service"=""; "04Profile"=""; "05LocalAdress"=""; "06RemoveAddress"=""};

    # START PARSING STRING
    :foreach Key,Value in=$ColumnsArray do={

        :local Symbol [:pick $Content $StartCursor];

        :if ($Symbol=$Separator) do={:set StartCursor ($StartCursor - 1)};

        :set EndCursor [:find $Content $Separator $StartCursor];

        :if (($EndCursor > $LineEndCursor) or ([:typeof $EndCursor]="nil")) do={:set EndCursor [:find $Content "\r" ($StartCursor-1)];};

        :set Cont [:pick $Content $StartCursor $EndCursor];

        :set ($ColumnsArray -> $Key ) $Cont;

        :set StartCursor ($EndCursor+1);
    };
    # END PARSING STRING

    # START CREATE COMMAND
    :local UserName ($ColumnsArray -> "01Name");

    :if ([/ppp secret find name=$UserName ]) do={
        :log info "Add PPP user: $UserName - already exist! Skipped.";
    } else={
        :local Command "/ppp secret add name=$UserName";

        :local UserPassword ($ColumnsArray -> "02Password");
        :if ($UserPassword != $Separator) do= {:set Command ("$Command" . " password=$UserPassword")};

        :local UserService ($ColumnsArray -> "03Service");
        :if ($UserService != $Separator) do= {:set Command ("$Command" . " service=$UserService")};

        :local UserProfile ($ColumnsArray -> "04Profile");
        :if ($UserProfile != $Separator) do= {:set Command ("$Command" . " profile=$UserProfile")};

        :local UserLocalAdress ($ColumnsArray -> "05LocalAdress");
        :if ($UserLocalAdress != $Separator) do= {:set Command ("$Command" . " local-address=$UserLocalAdress")};

        :local UserRemoveAddress ($ColumnsArray -> "06RemoveAddress");
        :if ($UserRemoveAddress != $Separator) do= {:set Command ("$Command" . " remote-address=$UserRemoveAddress")};

        [:parse $Command];

    };
    # END CREATE COMMAND

    :set StartCursor ($EndCursor+2);
};
:delay 2;
:log warning "Script CreatePPPUsers: completed.";

En la línea :local FileName «FileTemplate.csv»; puede dar su nombre de archivo de importación.

Script MHelp.pro: Cree usuarios de VPN de forma masiva desde un archivo CSV
Código de secuencia de comandos para crear muchos usuarios de VPN / PPP

Video: trabajo de guion

Solución de problemas

Mensajes de registro del dispositivo

  1. Script CreatePPPUsers: running. Import from file: FileTemplate.csv— el script comenzó a importar usuarios desde el archivo FileTemplate.csv;
  2. Error run script CreatePPPUsers: file size exceeded 4 KB (size constraint of a variable in Router OS 6)  — se ha excedido el tamaño de la variable para RouterOS 6. Divida el archivo en partes pequeñas o importe usuarios en varias etapas;
  3. Script CreatePPPUsers: completed — el guión ha terminado correctamente.

El script no funciona al inicio

Verifique los derechos de ejecución del script, deben corresponder a los especificados en el artículo (se notó un error en ROS 6.47.8 – los derechos máximos establecidos por defecto pueden causar un error de acceso).


? Script MikroTik: agregar múltiples usuarios de VPN (PPTP), desde el archivo csv, discutido en este artículo. Espero que ahora no sea difícil agregar una gran cantidad de usuarios de VPN / PPP al dispositivo MikroTik. Sin embargo, si tiene algún problema durante la configuración, no dude en escribir en los comentarios. Trataré de ayudar.

✅ Se verifica el guión: MikroTik hAP ac lite (RouterBOARD 952Ui-5ac2nD), RouterOS 6.47.8 (stable).

2 comentarios en «MikroTik Script: Crear usuarios de VPN de forma masiva a partir de un archivo»

Deja un comentario