แž€แžถแžšแžขแž“แžปแž‰แŸ’แž‰แžถแžแž–แžธแž…แž˜แŸ’แž„แžถแž™แž“แŸƒแžŸแŸ’แž‚แŸ’แžšแžธแž” Mikrotik แž–แžธ Telegram v 2.0

แžšแžธแž€แžšแžถแž™แžแŸ’แž„แŸƒแž”แžปแžŽแŸ’แž™แžขแžปแŸ†แž‘แžผแž€แž‘แžถแŸ†แž„แžขแžŸแŸ‹แž‚แŸ’แž“แžถแŸ” แž”แŸ’แžšแž’แžถแž“แž”แž‘แž“แŸแŸ‡แž‚แžบแž”แŸ’แžšแžŸแžพแžšแž‡แžถแž„ แž€แŸ†แžŽแŸ‚แž“แŸƒแžขแŸ’แžœแžธแžŠแŸ‚แž›แžแŸ’แž‰แžปแŸ†แž”แžถแž“แžŸแžšแžŸแŸแžšแž“แŸ…แž†แŸ’แž“แžถแŸ† 2016 แž“แŸ…แž‘แžธแž“แŸแŸ‡.

แž‡แžถแž‘แžผแž‘แŸ…แž‚แŸ„แž›แž€แžถแžšแžŽแŸแž“แŸƒแž”แŸ’แžšแžแžทแž”แžแŸ’แžแžทแž€แžถแžšแž˜แžทแž“แž”แžถแž“แž•แŸ’แž›แžถแžŸแŸ‹แž”แŸ’แžแžผแžšแž‘แŸ แž—แžถแž–แžแžปแžŸแž‚แŸ’แž“แžถแžแŸ‚แž˜แžฝแž™แž‚แžแŸ‹แž‚แžบแžแžถแžฅแžกแžผแžœแž“แŸแŸ‡แžœแžถแžŠแŸ†แžŽแžพแžšแž€แžถแžšแž—แŸ’แž›แžถแž˜แŸ—แžŠแŸ„แž™แž‚แŸ’แž˜แžถแž“แž€แžถแžšแž–แž“แŸ’แž™แžถแž–แŸแž›แŸ”

แž™แžพแž„แž”แž„แŸ’แž แŸ„แŸ‡แžŸแŸ’แž‚แŸ’แžšแžธแž”แž‘แŸ… Mikrotik แž•แŸ’แž›แžถแžŸแŸ‹แž”แŸ’แžแžผแžš BotID แž“แžทแž„ ChatID แž‘แŸ…แž‡แžถแžšแž”แžŸแŸ‹แž™แžพแž„ แž แžพแž™แž”แž„แŸ’แž€แžพแžแž€แžถแž›แžœแžทแž—แžถแž‚แžŸแž˜แŸ’แžšแžถแž”แŸ‹แžœแžถแŸ” แž€แŸ†แžŽแžแŸ‹แž”แŸ‰แžถแžšแŸ‰แžถแž˜แŸ‰แŸ‚แžแŸ’แžš "แž–แŸแž›แžœแŸแž›แžถแž…แžถแž”แŸ‹แž•แŸ’แžแžพแž˜" แžŠแžพแž˜แŸ’แž”แžธแž…แžถแž”แŸ‹แž•แŸ’แžแžพแž˜ (แžŠแŸ†แžŽแžพแžšแž€แžถแžšแžŸแŸ’แž‚แŸ’แžšแžธแž”แž“แŸ…แž–แŸแž›แž…แžถแž”แŸ‹แž•แŸ’แžแžพแž˜แŸ” )
"แž…แž“แŸ’แž›แŸ„แŸ‡แž–แŸแž›": 00:00:00
แž”แžพแž˜แžทแž“แžŠแžผแž…แŸ’แž“แŸ„แŸ‡แž‘แŸแžขแŸ’แžœแžธแž‚แŸ’แžšแž”แŸ‹แž™แŸ‰แžถแž„แž‚แžบแžŠแžผแž…แžŠแŸ‚แž›แžœแžถแž’แŸ’แž›แžถแž”แŸ‹แž˜แžถแž“แŸ”

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

แž”แž“แŸ’แž‘แžถแž”แŸ‹แž–แžธแž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แž”แžถแž“แž–แžธแžšแž”แžธแž†แŸ’แž“แžถแŸ† แž€แŸ†แž แžปแžŸแž˜แžฝแž™แžแŸ’แžšแžผแžœแž”แžถแž“แžšแž€แžƒแžพแž‰แŸ– แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž แŸแžแžปแž•แž›แžŠแŸ‚แž›แž˜แžทแž“แžŸแŸ’แž‚แžถแž›แŸ‹แž˜แžฝแž™แž…แŸ†แž“แžฝแž“ Mikrotik แžแŸ’แžŸแŸ„แž™แž”แž‰แŸ’แžˆแž”แŸ‹แžŸแŸ’แž‚แŸ’แžšแžธแž” แž”แŸ‰แžปแž“แŸ’แžแŸ‚แž“แŸ…แž›แžพแžขแŸ’แž“แž€แžŠแŸ‚แž›แžแŸ’แž›แžถแŸ†แž„แž‡แžถแž„แžœแžถแžŠแŸ†แžŽแžพแžšแž€แžถแžšแžŠแŸ„แž™แž˜แžทแž“แžˆแž”แŸ‹แŸ”

แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž‚แŸ„แž›แž”แŸ†แžŽแž„แž‘แžถแŸ†แž„แž“แŸแŸ‡ แžแŸ’แž‰แžปแŸ†แž”แžถแž“แž‚แž”แŸ‹แžˆแžพแž…แŸ’แžšแžแŸ‹ WatchDog แŸ” แž“แŸ…แž‘แžธแž“แŸแŸ‡แž™แžพแž„แž”แŸ’แžแžผแžšแžˆแŸ’แž˜แŸ„แŸ‡แžŸแŸ’แž‚แŸ’แžšแžธแž”แž‘แŸ…แž‡แžถแžขแŸ’แžœแžธแžŠแŸ‚แž›แž”แžถแž“แž”แž„แŸ’แž แžถแž‰แžแžถแž„แž›แžพแŸ” แž แžพแž™แž€แŸ†แžŽแžแŸ‹แž…แž“แŸ’แž›แŸ„แŸ‡แž–แŸแž›แž…แžถแž”แŸ‹แž•แŸ’แžแžพแž˜แžกแžพแž„แžœแžทแž‰ 5 แž“แžถแž‘แžธแŸ” แžšแŸ€แž„แžšแžถแž›แŸ‹ 5 แž“แžถแž‘แžธ "แžขแŸ’แž“แž€แžƒแŸ’แž›แžถแŸ†แž˜แžพแž›" แžšแž”แžŸแŸ‹แž™แžพแž„แž“แžนแž„แž–แžทแž“แžทแžแŸ’แž™แžŸแŸ’แž‚แŸ’แžšแžธแž” แž แžพแž™แž”แŸ’แžšแžŸแžทแž“แž”แžพแžœแžถแž˜แžทแž“แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž‘แŸ แžœแžถแž“แžนแž„แžŠแŸ†แžŽแžพแžšแž€แžถแžšแžœแžถแŸ”

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

แž‡แžถแž€แžถแžšแž”แŸ’แžšแžŸแžพแžšแžŽแžถแžŸแŸ‹, แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž”แž„แŸ’แžขแŸ‚แž˜, แžŸแŸ’แž‚แŸ’แžšแžธแž”แžแŸ’แžšแžผแžœแž”แžถแž“แž™แž€แž…แŸแž‰แž–แžธแžœแŸแž‘แžทแž€แžถ Mikrotik แŸ”
แž•แŸ’แž‰แžพแž”แŸ’แžšแž’แžถแž“แž”แž‘แžŸแŸ†แžแžถแž“แŸ‹แŸ—แž–แžธแž€แŸ†แžŽแžแŸ‹แž แŸแžแžปแž‘แŸ…แž€แžถแž“แŸ‹แžšแž‘แŸแŸ‡แžšแž”แžŸแŸ‹แž™แžพแž„แŸ”

แž™แžพแž„แž”แž“แŸ’แžแŸ‚แž˜แžŸแŸ’แž‚แŸ’แžšแžธแž”แžŠแžพแž˜แŸ’แž”แžธแž€แŸ†แžŽแžแŸ‹แž–แŸแž› แž“แžทแž„แž”แž‰แŸ’แž‡แžถแž€แŸ‹แž…แž“แŸ’แž›แŸ„แŸ‡แž–แŸแž›แž…แžถแž”แŸ‹แž•แŸ’แžแžพแž˜แžกแžพแž„แžœแžทแž‰แžšแŸ€แž„แžšแžถแž›แŸ‹ 5 แž“แžถแž‘แžธแž˜แŸ’แžแž„ แž•แŸ’แž›แžถแžŸแŸ‹แž”แŸ’แžแžผแžš BotID แž“แžทแž„ ChatID แž‘แŸ…แž‡แžถแžšแž”แžŸแŸ‹แž™แžพแž„แž•แŸ’แž‘แžถแž›แŸ‹แŸ”

แž€แžถแžšแž‡แžผแž“แžŠแŸ†แžŽแžนแž„-แž€แŸ†แžŽแžแŸ‹แž แŸแžแžป

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

แž™แžพแž„แž‘แž‘แžฝแž›แž”แžถแž“แž›แž‘แŸ’แž’แž•แž›แŸ–

แž€แžถแžšแžขแž“แžปแž‰แŸ’แž‰แžถแžแž–แžธแž…แž˜แŸ’แž„แžถแž™แž“แŸƒแžŸแŸ’แž‚แŸ’แžšแžธแž” Mikrotik แž–แžธ Telegram v 2.0

แž”แŸ’แžšแž—แž–: www.habr.com

แž”แž“แŸ’แžแŸ‚แž˜แž˜แžแžทแž™แŸ„แž”แž›แŸ‹