Kaugjuhtimise skriptide kÀivitamine Mikrotikust Telegramis v 2.0

Tere kĂ”igile möödunud pĂŒha puhul. See teema on paranenud versioon sellest, mida ma kaugel 2016. aastal siin kirjutasin Üldiselt ei ole tööpĂ”himĂ”te muutunud, ainus vahe on see, et nĂŒĂŒd töötab see viivitamatult, ilma viivitusteta..

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:

Kaugjuhtimise skriptide kÀivitamine Mikrotikust Telegramis v 2.0

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster