Ampidiro lavitra ny script Mikrotik avy amin'ny Telegram v 2.0

Mirary fety sambatra ho an'ny rehetra. Tsara kokoa ity lohahevitra ity dikan-teny nosoratako tamin'ny 2016 teto.

Amin'ny ankapobeny, ny fitsipiky ny fandidiana dia tsy niova, ny hany maha samy hafa dia izao dia miasa avy hatrany tsy misy hatak'andro.

Mampakatra ny script amin'ny Mikrotik izahay, manova ny BotID sy ChatID ho anay ary mamorona fandaharam-potoana ho azy. Apetraho ny mari-pamantarana "Fotoana fanombohana" ho fanombohana (Ataovy ny script amin'ny fanombohana.)
"Elaela": 00:00:00
Raha tsy izany dia toy ny teo ihany ny zava-drehetra.

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

Taorian'ny roa taona nampiasana dia nisy bibikely hita: noho ny antony tsy fantatra, ny Mikrotik malemy dia manakana ny script, fa amin'ny mahery kokoa dia miasa tsy mijanona.

Ho an'ireo tanjona ireo, dia nanipy ny WatchDog crutch aho. Eto isika dia manova ny anaran'ny script ho ilay voalaza etsy ambony. ary apetraho ho 5 minitra ny elanelam-potoana fanombohana. Isaky ny 5 minitra ny "watchdog" antsika dia hanamarina ny script ary raha tsy mandeha izy dia hampandeha azy.

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

Eny, ho an'ny tsindrin-tsakafo, ny script dia nalaina tao amin'ny forum Mikrotik.
Mandefa lohahevitra manan-danja avy amin'ny diary mankany amin'ny sarety.

Ampio ny script ho fandaharam-potoana sy mamaritra ny elanelam-potoana fanombohana isaky ny 5 minitra, hanova ny BotID sy ny ChatID ho anay.

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

Mahazo ny valiny izahay:

Ampidiro lavitra ny script Mikrotik avy amin'ny Telegram v 2.0

Source: www.habr.com

Add a comment