Tere kĂ”igile möödunud pĂŒha puhul. See teema on paranenud versioon sellest, mida ma kaugel 2016. aastal siin kirjutasin .
Laadime skripti Mikrotikusse, muuda BotID ja ChatID oma omadeks ning loome selle pĂ”hjal ajastuse. Seame parameetri âStart Timeâ vÀÀrtuseks startup (skripti kĂ€ivitamine tootmises).
âIntervalâ: 00:00:00
Muus osas on kÔik nagu oli.
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={} };
Kasutusse on tulnud paar aastat tagasi tuvastatud viga, mille tĂ”ttu nĂ”rgad Mikrotikud mingil pĂ”hjusel peatavad skripti, samas kui vĂ”imsamad töötavad katkestusteta.Selleks, et seda probleemi lahendada, koostasin WatchDog'i. Siin muutke skripti nimi sellele, mis eelnevalt mainitud. Seadke taaskĂ€ivitamise intervall 5 minutiks. Iga 5 minuti tagant kontrollib meie âvalvekoerâ skripti ja, kui see ei tööta, kĂ€ivitab selle.
WatchDogT.me
:global scriptname "t.me" :if ([:len [/system script job find script=$"scriptname"]] > 0) do={ :log info "$scriptname juba töötab - tapame vana skripti enne jÀtkamist" :foreach counter in=[/system script job find script=$"scriptname"] do={ /system script job remove $counter } } /system script run $scriptname
Ja desserdiks, skript on vÔetud Mikrotiku foorumist.Saadab olulised teemad logist meile Telegrami.
Saadab olulisi teemasid logist meile Telegrammi.
Laadige skript ajastusse ja mÀÀrake taaskÀivituse vahe 5 minuti jÀrel, vahetage BotID ja ChatID enda omadeks.
Teata-log
:globaalne viimaneAeg
:globaalne vÀljund
:globaalne mtIdentiteet [ /sĂŒsteem identiteet saada nimi];
:globaalne botID "botXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXX" ;
:globaalne minuChatID "YYYYYY" ;
:koht LogiSaada [ :mÀÀratlemine [ /log leia teemad~"kritiline" || sÔnum~"logimise ebaÔnnestumine" || sÔnum~"[Ff]ailure" ] ] ;
:koht LogiRidaArv [ :pikkus $LogiSaada ] ;
if ($LogiRidaArv > 0) do={
:koht praeguneAeg "$[ /log saada [ :valida $LogiSaada ($LogiRidaArv -1) ] aeg ]";
:if ([:pikkus $praeguneAeg] = 10 ) do={
:seada praeguneAeg [ :valida $praeguneAeg 0 10 ];
}
:seada vÀljund "$praeguneAeg - $[ /log saada [ :valida $LogiSaada ($LogiRidaArv-1) ] sÔnum ]";
:if (([:pikkus $viimaneAeg] 0) && ($viimaneAeg != $praeguneAeg))) do={
:seada viimaneAeg $praeguneAeg ;
:tööriist tÔmba url=("https://api.telegram.org/$botID/sendmessage?chat_id=$minuChatID&text="$mtIdentiteet" : $vÀljund") hoia-tulemus=ei
}
}Saame tulemuse:

Allikas: habr.com
