Uwezeshaji wa mbali wa hati za Mikrotik kutoka Telegram v 2.0

Furaha ya likizo iliyochelewa kwa kila mtu. Mada hii ni bora zaidi toleo la kile nilichoandika mnamo 2016 hapa.

Kwa ujumla, kanuni ya operesheni haijabadilika, tofauti pekee ni kwamba sasa inafanya kazi mara moja bila kuchelewa.

Tunapakia hati kwa Mikrotik, kubadilisha BotID na ChatID kuwa yetu na kuunda ratiba yake. Weka kigezo cha "Muda wa Kuanza" ili kuanza (Endesha hati wakati wa kuanza.)
"Muda": 00:00:00
Vinginevyo kila kitu ni kama ilivyokuwa.

Telegramu-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 < $startLoc) do={
    :set endLoc ($startLoc + 1);
  };
  :local message [:pick $content $startLoc $endLoc]
  #:log info $message;
  :return $message;
}


:while ( true ) do={
  :do {
    #:log info "https://api.telegram.org/$botID/getUpdates?offset=$messageId&limit=1&allowed_updates=message&timeout=60";
    :tool fetch url=("https://api.telegram.org/$botID/getUpdates?offset=$messageId&limit=1&allowed_updates=message&timeout=60") dst-path="getUpdates";
    :local content [/file get [/file find name=getUpdates] contents] ;
    #:log info $content;
    :if ([:len $content] > 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={}
};

Baada ya miaka michache ya matumizi, mdudu uligunduliwa: kwa sababu isiyojulikana, Mikrotik dhaifu husimamisha hati, lakini kwa wale wenye nguvu zaidi hufanya kazi bila kuacha.

Kwa madhumuni haya, nilitupa kwenye crutch WatchDog. Hapa tunabadilisha jina la hati kwa ile iliyoonyeshwa hapo juu. na weka muda wa kuanza tena kuwa dakika 5. Kila dakika 5 "mlinzi" wetu ataangalia hati na ikiwa haifanyi kazi, ataiendesha.

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

Kweli, kwa dessert, maandishi yalichukuliwa kutoka kwa jukwaa la Mikrotik.
Hutuma mada muhimu kutoka kwa logi hadi kwenye rukwama yetu.

Tunaongeza hati ili kuratibu na kubainisha muda wa kuanzisha upya kila baada ya dakika 5, kubadilisha BotID na ChatID kuwa zetu.

Taarifa-logi

: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] < 1) || (([: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
   }
}

Tunapata matokeo:

Uwezeshaji wa mbali wa hati za Mikrotik kutoka Telegram v 2.0

Chanzo: mapenzi.com

Kuongeza maoni