FjÀrraktivering av Mikrotik-skript frÄn Telegram v 2.0

Grattis pÄ den passerade helgen. Det hÀr Àmnet Àr en mycket bÀttre version av det jag skrev för lÀnge sedan 2016 hÀr I stort sett har arbetsprincipen inte förÀndrats, förutom att den nu fungerar omedelbart utan fördröjningar..

Vi lÀgger skriptet i Mikrotik, byter BotID och ChatID till vÄra egna och skapar ett schema för det. Vi stÀller in parametern "Start Time" pÄ startup (Kör skriptet vid start.)

"Interval": 00:00:00
I övrigt Àr allt som det var.
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 and ($commaLoc = 0 or $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) and [/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: Unknown command: $message") keep-result=no; } } } on-error={} };

Under nÄgra Är av anvÀndning har en bugg upptÀckts; av oklara skÀl stoppar svaga Mikrotik skriptet, medan det fungerar utan stopp pÄ kraftfullare.

För dessa ÀndamÄl har jag satt ihop en temporÀr lösning, WatchDog. HÀr byter vi skriptnamnet till det vi angav tidigare och stÀller in omstartintervallet till 5 minuter. Varje 5 minuter kommer vÄr "vakthund" att kontrollera skriptet, och om det inte fungerar, kommer det att starta om det.

WatchDogT.me

:global scriptname "t.me" :if ([:len [/system script job find script="$scriptname"]] > 0) do={ :log info "$scriptname Already Running - killing old script before continuing" :foreach counter in=[/system script job find script="$scriptname"] do={ /system script job remove $counter } } /system script run $scriptname

Och som en dessert, har skriptet tagits frÄn Mikrotik-forumet.

Det skickar viktiga Àmnen frÄn loggen till oss i Telegram.
Det skickar viktiga Àmnen frÄn loggen till oss i Telegram.

Vi lÀgger in skriptet i schemat och anger intervall för omstart var femte minut, Àndrar BotID och ChatID till vÄra egna.

Notify-log

: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
   }
}

Vi fÄr resultatet:

FjÀrraktivering av Mikrotik-skript frÄn Telegram v 2.0

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster