Fiksojmë aktivizimin e skenave Mikrotik nga Telegram v 2.0

Të gjithëve me festën e kaluar. Ky temë është një version më i mirë i asaj që kam shkruar në vitin 2016 këtu.

Në përgjithësi, parimi i punës nuk është ndryshuar, përveç se tani funksionon menjëherë pa vonesa.

Ngarkohet skripti në Mikrotik, ndryshojmë BotID dhe ChatID sipas të dhënave tona dhe krijojmë për të një planifikim. Vendosim parametrin 'Koha e Fillimit' në startup (Aktivizimi i skriptit kur të fillojë.)
'Intervali': 00:00:00
Në të tjerat, gjithçka mbetet siç ishte.

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 message ([$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={}
};

Pas disa vitesh përdorimi, u identifikua një bug, për arsye të paqartë, Mikrotik të dobët ndalojnë skenarin, ndërsa në ato më të fuqishme funksionon pa ndalese.

PĂ«r kĂ«to qĂ«llime, krijova njĂ« solucion WatchDog. kĂ«tu e ndryshojmĂ« emrin e skenarit nĂ« atĂ« qĂ« pĂ«rmendĂ«m mĂ« lart. dhe vendosim intervalin e ripĂ«rtritjes nĂ« 5 minuta. Çdo 5 minuta, „pĂ«rgjuesi ynĂ«â€ do tĂ« kontrollojĂ« skenarin dhe nĂ«se ai nuk funksionon, do ta niste atĂ«.

WatchDogT.me

:global scriptname "t.me"
:if ([:len [/system script job find script=$"scriptname"]] > 0) do={
:log info "$scriptname tashmë po punon - po vrasim skenarin e vjetër para se të vazhdojmë"
:foreach counter in=[/system script job find script=$"scriptname"] do={
/system script job remove $counter
}
}
/system script run $scriptname

Dhe për ëmbëlsirë, skenari është marrë nga forumi Mikrotik.
Dërgon tema të rëndësishme nga logu në telegramin tonë.

E hedhim skenarin në planifikim dhe tregojmë intervalin e ripërtritjes çdo 5 minuta, e ndryshojmë BotID dhe ChatID sipas të dhënave tona.

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

Do marrëjmë rezultatin:

Fiksojmë aktivizimin e skenave Mikrotik nga Telegram v 2.0

Burimi: habr.com

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster