MikroTik-script: Maak in bulk VPN-gebruikers aan op basis van een bestand

Het creëren van veel VPN-gebruikers tegelijk is een zeldzame MikroTik-taak, maar wordt aangetroffen in de praktijk van een netwerkbeheerder. Het script maakt veel PPP-gebruikers (Point-to-Point Protocol) op basis van een CSV-sjabloonbestand.

Het CSV-formaat is een eenvoudig en oud databaseformaat. Het bestaat enkel uit tekstgegevens, waardoor het gemakkelijk geïmplementeerd (lezen en/of schrijven) kan worden en een brede verspreiding kent. Waarden worden in principe gescheiden door komma’s, en regels door het nieuweregelteken.

Wikipedia
MikroTik-script: Maak in bulk VPN-gebruikers aan op basis van een bestand
CreatePPPUsers-script berichten in het MikroTik-apparaatlogboek

Inhoud

  1. Geplande reeks acties
  2. Maak een script
  3. Script code
  4. Video: scriptwerk
  5. Problemen oplossen

Artikel in andere talen:
?? – 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: Créer en masse des utilisateurs VPN à partir d’un fichier
?? – MikroTik-Script: Massenerstellung von VPN-Benutzern aus einer Datei

Geplande reeks acties

  1. Download de CSV-bestandssjabloon (FileTemplate.zip op GitHub);
  2. Voeg gebruikers toe aan het bestand (gecontroleerd door Microsoft Excel);
  3. Download het bestand naar het MikroTik-apparaat;
  4. Maak een script voor het importeren van PPP-gebruikers;
  5. Schakel MikroTik Veilige modus in;
  6. Voer het script uit;
  7. Het apparaatlogboek en de lijst met PPP-gebruikers controleren;
  8. Schakel de MikroTik Veilige modus uit als alles goed is;
  9. Schrijf een opmerking bij het artikel dat alles goed is gegaan (schrijf het apparaatmodel en de RouterOS-versie).
Sjabloon voor het maken van VPN-gebruikers downloaden (MHelp.pro)
Download een bestand sjabloon voor het maken van VPN-gebruikers vanuit GitHub

Maak een script

The following permissions are required to run the script: read, write, test, policy.

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

Voordat ik het script start, raad ik aan MikroTik Veilige modus in te schakelen en Veilige modus uit te schakelen, om ervoor te zorgen dat het script correct werkte – VPN-gebruikers zijn gemaakt.

Script code

# 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.";

In de regel :local FileName “FileTemplate.csv”; u kunt uw importbestandsnaam geven.

MHelp.pro-script: maak in bulk VPN-gebruikers aan op basis van een CSV-bestand
Script code for creating many VPN/PPP users

Video: scriptwerk

Problemen oplossen

Logboek Berichten van het apparaat

  1. Script CreatePPPUsers: running. Import from file: FileTemplate.csv— script begonnen met het importeren van gebruikers uit het bestand FileTemplate.csv;
  2. Error run script CreatePPPUsers: file size exceeded 4 KB (size constraint of a variable in Router OS 6)  — de grootte van de variabele RouterOS is overschreden 6. Verdeel het bestand in kleine delen of importeer gebruikers in verschillende fasen;
  3. Script CreatePPPUsers: completed — het script is correct voltooid.

Het script werkt niet bij het opstarten

Controleer de startrechten van het script, deze moeten overeenkomen met de rechten die in het artikel zijn gespecificeerd (een fout werd opgemerkt in ROS 6.47.8 – de maximale rechten die standaard zijn ingesteld, kunnen een toegangsfout veroorzaken).


? MikroTik-script – voeg meerdere VPN (PPP) -gebruikers toe vanuit CSV-bestand, besproken in dit artikel. Ik hoop dat het toevoegen van een groot aantal VPN / PPP-gebruikers aan het MikroTik-apparaat niet moeilijk zal zijn. Als u echter problemen ondervindt tijdens het instellen, kunt u in de opmerkingen schrijven. Ik zal proberen te helpen.

✅ Het script is geverifieerd: MikroTik hAP ac lite (RouterBOARD 952Ui-5ac2nD), RouterOS 6.47.8 (stable).

Plaats een reactie