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
Contenido
- Secuencia de acciones planificada
- Crear guion
- Código de secuencia de comandos
- Video: trabajo de guion
- 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
- Descargue la plantilla de archivo CSV (FileTemplate.zip en GitHub);
- Agregue usuarios al archivo (verificado por Microsoft Excel);
- Descargue el archivo en el dispositivo MikroTik;
- Cree un script para importar usuarios PPP;
- Active el modo seguro de MikroTik;
- Ejecute el script;
- Comprobación del log dispositivo y la lista de usuarios PPP;
- Si todo está bien, apague MikroTik Safe Mode;
- Escribe un comentario al artículo que todo salió bien (escribe el modelo del dispositivo y la versión de RouterOS).
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.
Video: trabajo de guion
Solución de problemas
Mensajes de registro del dispositivo
- Script CreatePPPUsers: running. Import from file: FileTemplate.csv— el script comenzó a importar usuarios desde el archivo FileTemplate.csv;
- 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;
- 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).
Buenas, el script inicia con la importacion de la primera linea de usuario, pero no continua.
Hola, ¿ha utilizado el archivo FileTemplate.zip?