Das gleichzeitige Erstellen vieler VPN-Benutzer ist eine seltene MikroTik-Aufgabe, die jedoch in der Praxis eines Netzwerkadministrators zu finden ist. Das Skript erstellt viele PPP-Benutzer (Point-to-Point-Protokoll) aus einer CSV-Vorlagendatei.
Das Dateiformat CSV steht für englisch Comma-separated values (seltener Character-separated values) und beschreibt den Aufbau einer Textdatei zur Speicherung oder zum Austausch einfach strukturierter Daten. Die Dateinamenserweiterung lautet .csv.
Wikipedia
Inhalt
Artikel in anderen Sprachen:
?? – 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: Maak in bulk VPN-gebruikers aan op basis van een bestand
Geplante Abfolge von Aktionen
- Laden Sie die CSV-Dateivorlage herunter (FileTemplate.zip auf GitHub).
- Benutzer zur Datei hinzufügen (von Microsoft Excel überprüft);
- Laden Sie die Datei auf das MikroTik-Gerät herunter.
- Erstellen Sie ein Skript zum Importieren von PPP-Benutzern.
- Aktivieren Sie den MikroTik-abgesicherten Modus.
- Führen Sie das Skript aus.
- Überprüfen des Geräteprotokolls und der Liste der PPP-Benutzer;
- Wenn alles in Ordnung ist, schalten Sie den MikroTik-abgesicherten Modus aus.
- Schreiben Sie einen Kommentar zu dem Artikel, dass alles gut gelaufen ist (schreiben Sie das Gerätemodell und die RouterOS-Version).
Skript erstellen
Die folgenden Berechtigungen sind erforderlich, um das Skript ausführen: read, write, test, policy.
[System] -> [Scripts] -> [+] -> [Name: CreatePPPUsers] -> [Policy: read, write, test, policy]
Bevor Sie das Skript ausführen, empfehlen wir, den abgesicherten MikroTik-Modus und den abgesicherten Modus zu deaktivieren, um sicherzustellen, dass das Skript ordnungsgemäß funktioniert – VPN-Benutzer wurden erstellt.
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 der Zeile :local FileName „FileTemplate.csv“; können Sie Ihren Importdateinamen angeben.
Video: Skriptarbeit
Lösung von Problemen
Geräteprotokoll Meldungen
- Script CreatePPPUsers: running. Import from file: FileTemplate.csv— Das Skript importierte Benutzer aus der Datei FileTemplate.csv;
- Error run script CreatePPPUsers: file size exceeded 4 KB (size constraint of a variable in Router OS 6) — Die Größe der Variablen für RouterOS wurde überschritten. 6. Teilen Sie die Datei in kleine Teile oder importieren Sie Benutzer in mehreren Schritten.
- Script CreatePPPUsers: completed — Das Skript wurde korrekt beendet.
Das Skript funktioniert beim Start nicht
Überprüfen Sie die Skriptstartrechte. Sie müssen den im Artikel angegebenen entsprechen (in ROS 6.47.8 wurde ein Fehler festgestellt – die standardmäßig festgelegten maximalen Rechte können einen Zugriffsfehler verursachen).
? MikroTik-Script – Fügen Sie mehrere VPN-Benutzer (PPP) aus der CSV-Datei hinzu, in diesem Artikel diskutiert. Ich hoffe, dass es jetzt nicht schwierig sein wird, dem MikroTik-Gerät eine große Anzahl von VPN/PPP-Benutzern hinzuzufügen. Wenn Sie jedoch beim Einrichten auf Probleme stoßen, können Sie diese gerne in die Kommentare eintragen. Ich werde versuchen zu helfen.
✅ Das Skript wird überprüft: MikroTik hAP ac lite (RouterBOARD 952Ui-5ac2nD), RouterOS 6.47.8 (stable).