Kure kugonesa kweMikrotik zvinyorwa kubva kuTeregiramu v 2.0

Happy belated holiday kune wese. Dingindira iri riri nani vhezheni yezvandakanyora kumashure muna 2016 pano.

Kazhinji, nheyo yekushanda haina kuchinja, mutsauko chete ndewekuti ikozvino inoshanda pakarepo pasina kunonoka.

Isu tinorodha iyo script kuMikrotik, shandura iyo BotID uye ChatID kune yedu uye kugadzira hurongwa hwayo. Seta iyo "Start Time" parameter kuti utange (Mhanya script pakutanga.)
"Interval": 00:00:00
Zvikasadaro zvinhu zvese sezvazvaive.

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

Mushure memakore mashoma ekushandiswa, bug yakawanikwa: nekuda kwechimwe chikonzero, isina kusimba Mikrotik inomisa script, asi kune mamwe ane simba anoshanda asingamire.

Nezvinangwa izvi, ndakakanda paWatchDog crutch. Pano tinoshandura zita rezvinyorwa kune rakaratidzwa pamusoro. uye isa nguva yekutangisa kusvika kumaminitsi mashanu. Ese maminetsi mashanu "watchdog" yedu inoongorora script uye kana ikasashanda, inomhanya.

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

Zvakanaka, kune dessert, script yakatorwa kubva kuMikrotik forum.
Inotumira nyaya dzakakosha kubva kurogi kuenda kungoro yedu.

Isu tinowedzera script kurongedza uye kutsanangura nguva yekutangazve maminetsi mashanu, shandura BotID uye ChatID kune yedu.

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

Isu tinowana mhedzisiro:

Kure kugonesa kweMikrotik zvinyorwa kubva kuTeregiramu v 2.0

Source: www.habr.com

Voeg