Tudo com o feriado passado. Este tópico é uma
versão melhor
do que escrevi em 2016 aqui .
Em geral, o princípio do trabalho não mudou, com a única diferença que agora funciona instantaneamente sem demora.
Carregamos o script no Mikrotik, alteramos o BotID e o ChatID para o nosso e criamos uma programação para ele. Defina o parâmetro "Start Time" como startup (execute o script na inicialização.)
Intervalo: 00:00:00
Caso contrário, tudo é como era.
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]
Por alguns anos de uso, um bug foi descoberto, por algum motivo, o Mikrotik fraco, por algum motivo, interrompe o script, ele funciona sem parar nos mais poderosos.
Para esses fins, joguei uma muleta de cão de guarda. aqui mudamos o nome do script para o indicado acima. e defina o intervalo de reinicialização para 5 minutos. A cada 5 minutos, nosso “cão de aparência” verifica o script e, se não funcionar, será executado.
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
Bem, para a sobremesa, o script é retirado do fórum Mikrotik.
Envia tópicos importantes do log para o nosso carrinho.
Colocamos o script na programação e especificamos o intervalo de reinicialização a cada 5 minutos, alteramos o BotID e o ChatID para os nossos.
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 } }
Nós obtemos o resultado:
