Chaw taws teeb ua haujlwm ntawm Mikrotik scripts los ntawm Telegram v 2.0

Zoo siab belated hnub so rau txhua tus. Lub ntsiab lus no zoo dua version ntawm qhov kuv tau sau rov qab rau xyoo 2016 ntawm no.

Feem ntau, lub hauv paus ntsiab lus ntawm kev ua haujlwm tsis tau hloov pauv, qhov sib txawv tsuas yog tias tam sim no nws ua haujlwm tam sim ntawd yam tsis muaj ncua sijhawm.

Peb upload tsab ntawv rau Mikrotik, hloov BotID thiab ChatID rau peb tus kheej thiab tsim lub sijhawm rau nws. Teem lub "Start Sijhawm" parameter rau kev pib (khiav tsab ntawv ntawm kev pib.)
"Interval": 00:00:00
Tsis tas li ntawd txhua yam yog zoo li nws yog.

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

Tom qab ob peb xyoos ntawm kev siv, tus kab mob tau pom: rau qee qhov tsis paub vim li cas, Mikrotik tsis muaj zog nres cov ntawv, tab sis ntawm cov muaj zog dua nws ua haujlwm yam tsis muaj kev txwv.

Rau cov laj thawj no, kuv cuam tshuam rau WatchDog crutch. Ntawm no peb hloov lub npe ntawm tsab ntawv mus rau ib qho qhia saum toj no. thiab teem caij rov pib dua rau 5 feeb. Txhua 5 feeb peb "watchdog" yuav xyuas cov ntawv thiab yog tias nws tsis ua haujlwm, nws yuav khiav nws.

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

Zoo, rau khoom noj qab zib, tsab ntawv raug coj los ntawm lub rooj sib tham Mikrotik.
Xa cov ntsiab lus tseem ceeb ntawm lub cav rau peb lub laub.

Peb ntxiv tsab ntawv los teem sijhawm thiab qhia lub sijhawm rov pib dua txhua 5 feeb, hloov BotID thiab ChatID rau peb tus kheej.

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

Peb tau txais qhov tshwm sim:

Chaw taws teeb ua haujlwm ntawm Mikrotik scripts los ntawm Telegram v 2.0

Tau qhov twg los: www.hab.com

Ntxiv ib saib