Herzlichen GlĂŒckwunsch nachtrĂ€glich zum Feiertag. Dieses Thema ist eine verbesserte Version dessen, was ich hier 2016 geschrieben habe. .
Laden Sie das Skript in Mikrotik hoch, Ă€ndern Sie BotID und ChatID auf Ihre und erstellen Sie einen Zeitplan dafĂŒr. Setzen Sie den Parameter "Start Time" auf Start (SkriptausfĂŒhrung beim Start).
"Interval": 00:00:00
Im Ăbrigen bleibt alles wie gehabt.
Telegram-v2
:delay 10 :global mtIdentity [/system identity get name]; :global botID "botXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXX"; :global myChatID "YYYYYY"; :local chatId 0; :local messageId 0;:local parse do={ :local startLoc ([:find $content $variable -1] + [:len $variable] + 2); :local commaLoc ([:find $content "," $startLoc] - 1 + 1); :local braceLoc ([:find $content "}" $startLoc] - 1 + 1); :local endLoc $commaLoc; :local startSymbol [:pick $content $startLoc] :if ($braceLoc != 0 und ($commaLoc = 0 oder $braceLoc < $commaLoc)) do={ :set endLoc $braceLoc; }; :if ($startSymbol = "{") do={ :set endLoc ($braceLoc + 1); }; :if ($quotas = true) do={ :set startLoc ($startLoc + 1); :set endLoc ($endLoc - 1); } :if ($endLoc 30) do={ :set messageId ([$parse content=$content variable="update_id"] + 1) :local message [$parse content=$content variable="text" quotas=true] :local chat [$parse content=$content variable="chat"] :local chatId [$parse content=$chat variable="id"] :if (($chatId = $myChatID) und ([/system script find name=$message] != "")) do={ :system script run $message; } else={ :tool fetch url=("https://api.telegram.org/$botID/sendmessage?chat_id=$chatId&text=$mtIdentity: Unbekannter Befehl: $message") keep-result=no } } } on-error={} };
Nach ein paar Jahren der Nutzung wurde ein Bug festgestellt, dass schwache Mikrotik aus unerklĂ€rlichen GrĂŒnden das Skript anhalten, wĂ€hrend es auf leistungsstĂ€rkeren GerĂ€ten ununterbrochen lĂ€uft.FĂŒr diesen Zweck habe ich einen Workaround, WatchDog, erstellt. Hier Ă€ndern wir den Skriptnamen auf den oben angegebenen. und setzen das Neustartintervall auf 5 Minuten. Alle 5 Minuten ĂŒberprĂŒft unser "WatchDog" das Skript, und wenn es nicht funktioniert, startet es es neu.
WatchDogT.me
:global scriptname "t.me" :if ([:len [/system script job find script=$"scriptname"]] > 0) do={ :log info "$scriptname bereits aktiv â beende das alte Skript vor dem Fortfahren" :foreach counter in=[/system script job find script=$"scriptname"] do={ /system script job remove $counter } } /system script run $scriptname
Und zum Abschluss, das Skript stammt aus dem Mikrotik-Forum.Es sendet wichtige Themen aus dem Protokoll an uns ĂŒber Telegram.
Es sendet wichtige Themen aus dem Protokoll an uns ĂŒber Telegram.
Wir fĂŒgen das Skript in den Zeitplan ein und geben das Intervall fĂŒr einen Neustart alle 5 Minuten an, Ă€ndern BotID und ChatID auf unsere.
Benachrichtigungsprotokoll
:global lastTime
:global output
:global mtIdentity [ /system identity get name ];
:global botID "botXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXX" ;
:global myChatID "YYYYYY" ;
:local LogGet [ :toarray [ /log find topics~"critical" || message~"login failure" || message~"[Ff]ailure" ] ] ;
:local LogtLineCount [ :len $LogGet ] ;
if ($LogtLineCount > 0) do={
:local currentTime "$[ /log get [ :pick $LogGet ($LogtLineCount -1) ] time ]";
:if ([:len $currentTime] = 10 ) do={
:set currentTime [ :pick $currentTime 0 10 ];
}
:set output "$currentTime - $[/log get [ :pick $LogGet ($LogtLineCount-1) ] message ]";
:if (([:len $lastTime] 0) && ($lastTime != $currentTime))) do={
:set lastTime $currentTime ;
:tool fetch url=("https://api.telegram.org/$botID/sendmessage?chat_id=$myChatID&text="$mtIdentity" : $output") keep-result=no
}
}Wir erhalten das Ergebnis:

Quelle: habr.com
