MikroTik-script: Melding apparaat aanmelding

Het script stuurt een melding over het succesvol inloggen en het einde van de gebruikerssessie op het MikroTik-apparaat. De melding wordt naar e-mail of Telegram gestuurd.

Er zijn veel scripts op internet waarmee u het MikroTik-apparaatlogboek kunt ontleden, maar ze zijn allemaal enorm en moeilijk te begrijpen. Ik [Yun Sergey] schreef een eenvoudig script om dit probleem op te lossen.

Het script zoekt naar “account” -gebeurtenissen in het MikroTik-apparaatlogboek sinds het voor het laatst werd uitgevoerd. Maakt een bericht met alle gebeurtenissen die hebben plaatsgevonden sinds de laatste start.

Het script maakt en gebruikt de globale variabele ParseLogAccountEndArrayID, slaat de ID op van het laatste element uit de array met records met het onderwerp “account“.

De volgende functies worden gebruikt om meldingen te verzenden:

Voorbeeldberichten:

  • user USER logged in from E4:6F:13:AA:58:2D via winbox – gebruiker is aangemeld op het apparaat met WinBox;
  • user USER logged in via local – gebruiker ingelogd op het apparaat met behulp van het MAC-adres van het apparaat;
  • user USER logged in from 192.168.1.9 via telnet – gebruiker lanceerde MikroTik interne terminal.

Voorbeeld van e-mailbericht:

E-mailmelding wanneer de gebruiker inlogt op het MikroTik-apparaat

Voorbeeld van een Telegram bericht:

Telegram message - notification of user login to MikroTik device

Artikel in andere talen:
?? – MikroTik Script: Device Login Notification
?? – MikroTik Script: Notificación de inicio de sesión del dispositivo
?? – MikroTik Скрипт: Уведомление о входе на устройство
?? – Script MikroTik: Notification de connexion de l’appareil
?? – MikroTik-Script: Benachrichtigung über die Geräteanmeldung

Maak een script

De volgende machtigingen zijn vereist om het script uit te voeren: read, write, test, policy.

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

Script code:

: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]
MikroTik Script: Device Login Notification

Voeg script toe aan Scheduler

De volgende machtigingen zijn vereist om het script uit te voeren: read, write, test, policy.

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

Of ren in 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

U kunt nu de controle over uw MikroTik-apparaten vergroten – door de inlog- en uitlogtijden van apparaatbeheerders te regelen. En configureer ook de uitvoering van acties wanneer de gebruiker inlogt, maak bijvoorbeeld een reservekopie van de instellingen of maak een kopie van de apparaatconfiguratie.


? Hoe een script te maken – melding van gebruikersaanmelding op het MikroTik-apparaat en het verzenden van een melding per e-mail of Telegram-bericht, werd in dit artikel besproken. Ik hoop dat je nu de controle over MikroTik-apparaten kunt verbeteren door de succesvolle aanmeldingen van beheerders op het apparaat te volgen of door de acties van een indringer op tijd te detecteren. Mocht u echter problemen ondervinden bij het configureren van het script, schrijf dan gerust in de commentaren. Ik zal proberen te helpen.

Het script wordt gecontroleerd: hAP ac lite [RouterBOARD 952Ui-5ac2nD], RouterOS 6.47.8 (stable).

Plaats een reactie