Telegrami kaudu Mikrotiki kaugjuhtimise skriptid versioon 2.0

Palju õnne möödunud püha puhul. See teema on parem versioon sellest, mida ma kirjutasin kaugel 2016. aastal siin. Üldiselt ei ole tööpõhimõte muutunud, ainus erinevus on see, et nüüd töötab see koheselt ilma viivitusteta..

Laadige skript Mikrotikisse, muutke BotID ja ChatID enda omadeks ning looge selle jaoks ajakava. Seadke parameeter „Start Time” käivituseks (Skripti käivitamine käivitamisel.)

„Interval”: 00:00:00
Muus osas on kõik nagu enne.
Telegram-v2

Telegram-v2

:viivitus 10
:globaalne mtIdentity [/system identity get name];
:globaalne botID "botXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXX" ;
:globaalne myChatID "YYYYYY" ;
:kohalik chatId 0;
:kohalik messageId 0;


:kohalik parse do={
  :kohalik startLoc ([:find $content $variable -1] + [:len $variable] + 2);
  :kohalik commaLoc ([:find $content "," $startLoc] - 1 + 1);
  :kohalik braceLoc ([:find $content "}" $startLoc] - 1 + 1);
  :kohalik endLoc $commaLoc;
  :kohalik 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)
      :kohalik message [$parse content=$content variable="text" quotas=true]
      :kohalik chat [$parse content=$content variable="chat"]
      :kohalik 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: Tunnetu käsk: $message") keep-result=no
      }
    }
  } on-error={}
};

Kasutuse paaril aastal kerkis esile tõrge: teadmata põhjustel peatavad nõrgad Mikrotik mingil põhjusel skripti, samas kui tugevamad töötavad katkematult.

Selle jaoks lõin ajutise lahenduse WatchDog. Siin muutke skripti nime vastavalt eelnevalt mainitule ja seadistage taaskäivitamise intervall 5 minutiks. Iga 5 minuti järel kontrollib meie „vahtkoer” skripti ning kui see ei tööta, käivitab ta selle uuesti.

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

Ja lõppu, skript on võetud Mikrotik foorumist.
Saab kanda olulisi teemasid logist meile telegruppi.

Kandke skript ajakavale ja seadke taaskäivitamise intervall iga 5 minuti järel, muutes BotID ja ChatID oma omadeks.

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

Saame tulemuse:

Telegrami kaudu Mikrotiki kaugjuhtimise skriptid versioon 2.0

Allikas: habr.com

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster