La création de nombreux utilisateurs VPN à la fois est une tâche rare de MikroTik, mais elle se retrouve dans la pratique d’un administrateur réseau. Le script crée de nombreux utilisateurs PPP (Point-to-Point Protocol) à partir d’un fichier modèle CSV.
Comma-separated values, connu sous le sigle CSV, est un format texte ouvert représentant des données tabulaires sous forme de valeurs séparées par des virgules.
Wikipedia
Contenu
- Séquence d’actions planifiée
- Créer un script
- Code de script
- Vidéo: travail de script
- Résolution de problèmes
Article dans d’autres langues:
?? – MikroTik Script: Bulk create VPN users from a file
?? – MikroTik Script: Crear usuarios de VPN de forma masiva a partir de un archivo
?? – MikroTik Скрипт: Массовое создание VPN пользователей из файла
?? – MikroTik-Script: Massenerstellung von VPN-Benutzern aus einer Datei
?? – MikroTik-script: Maak in bulk VPN-gebruikers aan op basis van een bestand
Séquence d’actions planifiée
- Téléchargez le modèle de fichier CSV (FileTemplate.zip sur GitHub);
- Ajouter des utilisateurs au fichier (vérifié par Microsoft Excel);
- Téléchargez le fichier sur l’appareil MikroTik;
- Créez un script pour importer des utilisateurs PPP;
- Activez le mode sans échec MikroTik;
- Exécutez le script;
- Vérification du journal de l’appareil et de la liste des utilisateurs PPP;
- Si tout va bien, désactivez le mode sans échec MikroTik;
- Écrivez un commentaire à l’article que tout s’est bien passé (écrivez le modèle de l’appareil et la version de RouterOS).
Créer un script
Les autorisations suivantes sont requises pour exécuter le script: read, write, test, policy.
[System] -> [Scripts] -> [+] -> [Name: CreatePPPUsers] -> [Policy: read, write, test, policy]
Avant d’exécuter le script, je recommande d’activer le mode sans échec MikroTik et de désactiver le mode sans échec, en veillant à ce que le script fonctionne correctement – les utilisateurs VPN ont été créés.
Code de script
# 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.";
Dans la ligne :local FileName « FileTemplate.csv »; vous pouvez donner le nom de votre fichier d’importation.
Vidéo: travail de script
Résolution de problèmes
Messages du journal de l’appareil
- Script CreatePPPUsers: running. Import from file: FileTemplate.csv— le script a commencé à importer des utilisateurs à partir du fichier FileTemplate.csv;
- Error run script CreatePPPUsers: file size exceeded 4 KB (size constraint of a variable in Router OS 6) — la taille de la variable pour RouterOS 6 a été dépassée. Divisez le fichier en petites parties ou importez les utilisateurs en plusieurs étapes;
- Script CreatePPPUsers: completed — le script s’est terminé correctement.
Le script ne fonctionne pas au démarrage
Vérifiez les droits de lancement du script, ils doivent correspondre à ceux spécifiés dans l’article (une erreur a été constatée dans ROS 6.47.8 – les droits maximum définis par défaut peuvent provoquer une erreur d’accès).
? Script MikroTik – ajouter plusieurs utilisateurs VPN (PPP), à partir d’un fichier csv, discuté dans cet article.J’espère que maintenant l’ajout d’un grand nombre d’utilisateurs VPN/PPP à l’appareil MikroTik ne sera pas difficile. Cependant, si vous rencontrez des problèmes lors de la configuration, n’hésitez pas à écrire dans les commentaires. J’essaierai d’aider.
✅ Le script est vérifié: MikroTik hAP ac lite (RouterBOARD 952Ui-5ac2nD), RouterOS 6.47.8 (stable).