ะัะตั
ั ะฟัะพัะตะดัะธะผ ะฟัะฐะทะดะฝะธะบะพะผ. ะะฐะฝะฝะฐั ัะตะผะฐ ัะฒะปัะตััั ะฑะพะปะตะต ะปัััะตะน
ะ ัะตะปะพะผ ะฟัะธะฝัะธะฟ ัะฐะฑะพัั ะฝะต ะธะทะผะตะฝะธะปัั, ั ัะพะน ะปะธัั ัะฐะทะฝะธัะตะน, ััะพ ัะตะฟะตัั ะพะฝ ะพััะฐะฑะฐััะฒะฐะตั ะผะณะฝะพะฒะตะฝะฝะพ ะฑะตะท ะทะฐะดะตัะถะตะบ.
ะะฐะบะธะดัะฒะฐะตะผ ัะบัะธะฟั ะฒ Mikrotik, ะผะตะฝัะตะผ BotID ะธ ChatID ะฝะฐ ัะฒะพะธ ะธ ัะพะทะดะฐะตะผ ะฝะฐ ะฝะตะณะพ schedule. ะกัะฐะฒะธะผ ะฟะฐัะฐะผะตัั ยซStart Timeยป ะฝะฐ startup (ะะฐะฟััะบ ัะบัะธะฟัะฐ ะฟัะธ ััะฐััะต.)
ยซIntervalยป: 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.
ะัะฟัะฐะฒะปัะตั ะฒะฐะถะฝัะต ัะพะฟะธะบะธ ะธะท ะปะพะณะฐ ะฝะฐะผ ะฒ ัะตะปะตะณั.
ะะฐะบะธะดัะฒะฐะตะผ ัะบัะธะฟั ะฒ schedule ะธ ัะบะฐะทัะฒะฐะตะผ ะธะฝัะตัะฒะฐะป ะฟะตัะตะทะฐะฟััะบะฐ ะบะฐะถะดัะต 5 ะผะธะฝัั, ะผะตะฝัะตะผ BotID ะธ ChatID ะฝะฐ ัะฒะพะธ.
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
}
}
ะะพะปััะธะผ ัะตะทัะปััะฐั:
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com