MikroTik Script: Créer en masse des utilisateurs VPN à partir d’un fichier

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
MikroTik Script: créer en masse des utilisateurs VPN à partir d'un fichier
Messages de script CreatePPPUsers dans le journal de l’appareil MikroTik

Contenu

  1. Séquence d’actions planifiée
  2. Créer un script
  3. Code de script
  4. Vidéo: travail de script
  5. 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

  1. Téléchargez le modèle de fichier CSV (FileTemplate.zip sur GitHub);
  2. Ajouter des utilisateurs au fichier (vérifié par Microsoft Excel);
  3. Téléchargez le fichier sur l’appareil MikroTik;
  4. Créez un script pour importer des utilisateurs PPP;
  5. Activez le mode sans échec MikroTik;
  6. Exécutez le script;
  7. Vérification du journal de l’appareil et de la liste des utilisateurs PPP;
  8. Si tout va bien, désactivez le mode sans échec MikroTik;
  9. Écrivez un commentaire à l’article que tout s’est bien passé (écrivez le modèle de l’appareil et la version de RouterOS).
Télécharger le modèle de création d'utilisateurs VPN (MHelp.pro)
Téléchargez un modèle de fichier pour créer des utilisateurs VPN, à partir de GitHub

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.

Script MHelp.pro: créer en masse des utilisateurs VPN à partir d'un fichier CSV
Code de script pour créer de nombreux utilisateurs VPN / PPP

Vidéo: travail de script

Résolution de problèmes

Messages du journal de l’appareil

  1. Script CreatePPPUsers: running. Import from file: FileTemplate.csv— le script a commencé à importer des utilisateurs à partir du fichier FileTemplate.csv;
  2. 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;
  3. 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).

Laisser un commentaire