Kuthandizira kwakutali kwa zolemba za Mikrotik kuchokera ku Telegraph v 2.0

Tchuthi yabwino yochedwa kwa aliyense. Mutuwu ndi wabwinoko zomwe ndidalemba kale mu 2016 apa.

Kawirikawiri, mfundo ya ntchito sinasinthe, kusiyana kokhako ndikuti tsopano ikugwira ntchito nthawi yomweyo popanda kuchedwa.

Timayika zolemba ku Mikrotik, tisinthe BotID ndi ChatID kukhala zathu ndikupanga ndandanda yake. Khazikitsani gawo la "Start Time" kuti muyambe (Thamangani script poyambira.)
"Nthawi zambiri": 00:00:00
Apo ayi zonse ziri monga momwe zinalili.

Telegalamu-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={}
};

Pambuyo pazaka zingapo zogwiritsidwa ntchito, cholakwika chinapezeka: pazifukwa zosadziwika, Mikrotik yofooka imayimitsa script, koma pamphamvu kwambiri imagwira ntchito popanda kuyimitsa.

Pazifukwa izi, ndinaponya ndodo ya WatchDog. Apa tikusintha dzina la script kukhala lomwe lasonyezedwa pamwambapa. ndikukhazikitsa nthawi yoyambiranso mphindi 5. Mphindi 5 zilizonse "woyang'anira" wathu aziyang'ana zolembazo ndipo ngati sizikugwira ntchito, aziyendetsa.

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

Chabwino, chifukwa cha mchere, zolembazo zidatengedwa kuchokera ku Mikrotik forum.
Amatumiza mitu yofunikira kuchokera pa chipika kupita kungolo yathu.

Timawonjezera zolembazo kuti tikonze ndikulongosola nthawi yoyambiranso mphindi 5 zilizonse, tisinthe BotID ndi ChatID kukhala zathu.

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

Timapeza zotsatira:

Kuthandizira kwakutali kwa zolemba za Mikrotik kuchokera ku Telegraph v 2.0

Source: www.habr.com

Kuwonjezera ndemanga