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
