Script MikroTik: Notification de connexion de l’appareil

Le script enverra une notification concernant la connexion réussie et la fin de la session de l’utilisateur sur l’appareil MikroTik. La notification est envoyée par e-mail ou Telegram.

Il existe de nombreux scripts sur Internet qui vous permettent d’analyser le journal de l’appareil MikroTik, mais ils sont tous énormes et difficiles à comprendre. J’ai [Yun Sergey] écrit un script simple pour résoudre ce problème.

Le script recherche les événements « account » dans le journal de l’appareil MikroTik depuis sa dernière exécution. Crée un message répertoriant tous les événements survenus depuis le dernier démarrage.

Le script crée et utilise la variable globale ParseLogAccountEndArrayID, stocke l’ID du dernier élément du tableau d’enregistrements avec le sujet « account« .

Les fonctions suivantes sont utilisées pour envoyer des notifications:

Exemples de messages:

  • user USER logged in from E4:6F:13:AA:58:2D via winbox – l’utilisateur est connecté à l’appareil à l’aide de WinBox;
  • user USER logged in via local – l’utilisateur s’est connecté à l’appareil à l’aide de l’adresse MAC de l’appareil;
  • user USER logged in from 192.168.1.9 via telnet – l’utilisateur a lancé le terminal interne MikroTik.

Exemple de message électronique:

Notification par e-mail lors de la connexion de l'utilisateur à l'appareil MikroTik

Exemple de message Telegram:

Message télégramme - notification de la connexion de l'utilisateur à l'appareil MikroTik

Article dans d’autres langues:
?? – MikroTik Script: Device Login Notification
?? – MikroTik Script: Notificación de inicio de sesión del dispositivo
?? – MikroTik Скрипт: Уведомление о входе на устройство
?? – MikroTik-Script: Benachrichtigung über die Geräteanmeldung
?? – MikroTik-script: Melding apparaat aanmelding

Créer un script

Les autorisations suivantes sont requises pour exécuter le script: read, write, test, policy.

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

Code de script:

:local DeviceName [/system identity get name];
:local Time [/system clock get time];
:local Date [/system clock get date];
:local EmailMessageText;
:local TelegramMessageText;

:global ParseLogAccountEndArrayID;

:local IDsEventsAccount [/log find where  topics ~ "account"];

:local LenArrayIDs [:len $IDsEventsAccount];
:local StartArrayID [:find $IDsEventsAccount $ParseLogAccountEndArrayID];
:local EndArrayID ($IDsEventsAccount -> ($LenArrayIDs-1));

:if ($EndArrayID != $ParseLogAccountEndArrayID and [:tobool $ParseLogAccountEndArrayID] ) do={

    :for KeyArray from=($StartArrayID+1) to=($LenArrayIDs-1) do={
        :local IDMessage ($IDsEventsAccount ->$KeyArray );
        :set EmailMessageText "$EmailMessageText \n\r  $[/log get number=$IDMessage time] - $[/log get number=$IDMessage message];";
        :set TelegramMessageText "$TelegramMessageText %0D%0A  $[/log get number=$IDMessage time] - $[/log get number=$IDMessage message];";
        }

    # START SEND EMAIL
    :local SendTo "notify@mhelp.pro";
    :local Subject "\F0\9F\94\93 AUTH: $DeviceName [$Date $Time]";
    :local MessageText "$EmailMessageText";
    :local FileName "";
    :local SendEmail [:parse [/system script get SendEmailFunction source]];
    $SendEmail SendTo=$SendTo TextMail=$MessageText Subject=$Subject FileName=$FileName;
    # END SEND EMAIL

    # START SEND TELEGRAM
    :local MessageText "\F0\9F\94\93 <b>$DeviceName: AUTH</b> $TelegramMessageText";
    :local SendTelegramMessage [:parse [/system script  get MyTGBotSendMessage source]];
    $SendTelegramMessage MessageText=$MessageText;
    # END SEND TELEGRAM
}

:set ParseLogAccountEndArrayID $EndArrayID;
# YunSergey [MHelp.pro]
Script MikroTik: Notification de connexion de l'appareil

Ajouter un script au planificateur

Les autorisations suivantes sont requises pour exécuter le script: read, write, test, policy.

[System] -> [Schedule] -> [+] -> [Name: ParseLogAccountEvents] —>  [Interval: 00:05:00] -> [Policy: read, write, policy, test]

Ou exécuter dans le terminal:

/system scheduler add name=ParseLogAccountEvents policy=read,write,policy,test on-event="/system script run ParseLogAccountEvents" interval=5m comment="Analyze the log account and send login / logout events"
Add script "user login notification" to MikroTik scheduler

Vous pouvez désormais augmenter le contrôle de vos appareils MikroTik – en contrôlant les heures de connexion et de déconnexion des administrateurs d’appareils. Et configurez également l’exécution des actions lorsque l’utilisateur se connecte, par exemple, créez une copie de sauvegarde des paramètres ou créez une copie de la configuration de l’appareil.


? Comment créer un script – notification de la connexion de l’utilisateur à l’appareil MikroTik et envoi de notification par e-mail ou Telegram message , a été abordé dans cet article. J’espère que vous pourrez désormais améliorer le contrôle des appareils MikroTik en suivant les connexions réussies des administrateurs à l’appareil ou en détectant les actions d’un intrus à temps. Cependant, si vous rencontrez des problèmes lors de la configuration du script, n’hésitez pas à écrire dans les commentaires. J’essaierai d’aider.

Le script est vérifié: hAP ac lite [RouterBOARD 952Ui-5ac2nD], RouterOS 6.47.8 (stable).

Laisser un commentaire