Mikrotik Skript: E-Mail Benachrichtigung über neue MAC-Adressen im Netzwerk
Servus Kollegen,
hatte vor kurzem einen Kunden der folgendes Anliegen hatte: Es sollte über jede neu auftauchende MAC-Adresse für die per DHCP eine Lease auf dem Mikrotik ausgegeben wurde eine Mail verschickt werden, und das nur über ein Skript auf dem Mikrotik.
Das Script kann über den Scheduler regelmäßig nach Bedarf, z.B. alle 5 Minuten ausgeführt werden oder direkt im DHCP-Server unter Lease-Skript eingetragen werden und vergleicht die bereits jemals aufgetauchten MACs (werden in einer einfachen Textdatei gespeichert) mit der aktuellen Lease-Liste der aktiven DHCP-Server auf dem Mikrotik. Kommt eine/mehrere neue dazu wird eine Mail mit den Informationen zum Client (MAC,Name,IP-Adresse,DHCP-Servername) per Mail verschickt und die MAC zur Liste der bekannten MACs hinzugefügt.
Absender- und Empfänger E-Mail Adresse sind im Kopf des Skripts anzugeben. Voraussetzung für das Funktionieren der Benachrichtigung ist natürlich das bereits ein E-Mail-Konto unter /tool e-mail hinterlegt ist.
Welche(r) DHCP-Server berücksicht werden soll kann ebenfalls in der Variablen "dhcpserver" als Regular Expression String angegeben werden. Ein Punkt inkludiert hier also die Leases aller vorhandenen DHCP-Server.
Dachte das kann vielleicht der ein oder andere mal gebrauchen.
Viel Spaß
Grüße @colinardo
hatte vor kurzem einen Kunden der folgendes Anliegen hatte: Es sollte über jede neu auftauchende MAC-Adresse für die per DHCP eine Lease auf dem Mikrotik ausgegeben wurde eine Mail verschickt werden, und das nur über ein Skript auf dem Mikrotik.
Das Script kann über den Scheduler regelmäßig nach Bedarf, z.B. alle 5 Minuten ausgeführt werden oder direkt im DHCP-Server unter Lease-Skript eingetragen werden und vergleicht die bereits jemals aufgetauchten MACs (werden in einer einfachen Textdatei gespeichert) mit der aktuellen Lease-Liste der aktiven DHCP-Server auf dem Mikrotik. Kommt eine/mehrere neue dazu wird eine Mail mit den Informationen zum Client (MAC,Name,IP-Adresse,DHCP-Servername) per Mail verschickt und die MAC zur Liste der bekannten MACs hinzugefügt.
Absender- und Empfänger E-Mail Adresse sind im Kopf des Skripts anzugeben. Voraussetzung für das Funktionieren der Benachrichtigung ist natürlich das bereits ein E-Mail-Konto unter /tool e-mail hinterlegt ist.
Welche(r) DHCP-Server berücksicht werden soll kann ebenfalls in der Variablen "dhcpserver" als Regular Expression String angegeben werden. Ein Punkt inkludiert hier also die Leases aller vorhandenen DHCP-Server.
# Dateiname zur Sicherung der MACs
:local filename "known-macs.txt"
# Welche DHCP Server Leases sollen überwacht werden (Achtung bitte Regular Expression String benutzen / Ein Punkt berücksichtigt alle DHCP-Server)
:local dhcpserver "."
# Absender-Adresse
:local MAILFROM "userfrom@domain.de"
# Empfänger-Adresse
:local MAILTO "userto@domain.de"
# aktuelle leases der angegebenen DHCP-Server holen
:local leases [/ip dhcp-server lease print as-value where server ~ "$dhcpserver"]
# variables
:local newmacs ""
:local foundnew false
:local mailbody ""
:local filedata ""
:if ([/file find name=$filename] != "") do={
# Datei mit bekannten MAC-Adressen existiert, setze Variable mit Inhalt
:set filedata [/file get $filename contents]
} else={
# Datei mit bekannten MAC-Adressen existiert noch nicht, erstelle Datei
/file print from=0 file=$filename
:delay 1
}
# Prüfe jede MAC ob sie noch nicht in der Datei vorhanden ist
:foreach mac in=$leases do={
:if ([:find $filedata ($mac->"mac-address")] < 0) do={
:set newmacs ($newmacs . ($mac->"mac-address") . ";" . ($mac->"host-name") . "\r\n")
:set mailbody ($mailbody . "MAC-ADRESSE: " . ($mac->"mac-address") . "\r\nHOSTNAME: " . ($mac->"host-name") . "\r\nSERVER: " . ($mac->"server") . "\r\nIP: " . ($mac->"address"). "\r\n=============")
:set foundnew true
}
}
# wenn neue MACs vorhanden sind schreibe sie in die Datei zurück, schreibe Info ins Log und benachrichtige per Mail
:if ($foundnew = true) do={
/file set $filename contents=($filedata . $newmacs)
:log warning ("Neu erkannte MAC-Adressen im Netzwerk:\r\n" . $mailbody)
/tool e-mail send to="$MAILTO" subject="Neue MAC-Adresse(n) im Netzwerk" from="$MAILFROM" body=("Es wurde(n) neue MAC-Adresse(n) im Netzwerk registriert:\r\n" . $mailbody)
}
Viel Spaß
Grüße @colinardo
Updates
Datum | Änderung |
---|---|
10.05.2017 | + Optimierung (Zusammenfassung bei mehreren MACs zu einer Mail, Angabe der zu berücksichtigenden DHCP-Server) |
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 326550
Url: https://administrator.de/contentid/326550
Ausgedruckt am: 26.11.2024 um 03:11 Uhr
5 Kommentare
Neuester Kommentar
Ich fackel das zwar meist über arpwatch ab, aber es ist gut zu wissen, daß man das mit wenig Aufwand auch auf einem Mikrotik erschlagen kann.
lks
Hey,
Danke dir für das Skript.
Gruß mik
ich warte ja immer noch auf ein Event-Subscription System in RouterOS
Nicht nur du !Danke dir für das Skript.
Gruß mik