Dude + Scripting + telegram

Здесь выкладываем скрипты
Правила форума
Уважаемые Пользователи форума, обратите внимание!
Ни при каких обстоятельствах, Администрация форума, не несёт ответственности за какой-либо, прямой или косвенный, ущерб причиненный в результате использования материалов, взятых на этом Сайте или на любом другом сайте, на который имеется гиперссылка с данного Сайта. Возникновение неисправностей, потерю программ или данных в Ваших устройствах, даже если Администрация будет явно поставлена в известность о возможности такого ущерба.
Просим Вас быть предельно осторожными и внимательными, в использовании материалов раздела. Учитывать не только Ваши пожелания, но и границы возможностей вашего оборудования.
Ответить
vqd
Модератор
Сообщения: 3605
Зарегистрирован: 26 сен 2013, 14:20
Откуда: НСК
Контактная информация:

Что то утро оказалось продуктивным. Заказы все сделал и собственно делать нечего больше.

Думаю дай ка я прикручу телеграм к Dude и заодно вспомню как скрипты на микротике по событию в Dude выполнять да еще и с параметрами

И так:

1. На микротике создаем скрипт с функцией, в моем случае имя скрипта TelegramSend

Код: Выделить всё

:global TelegramSend do={
:local id %You_telegram_id%
:local chatid %Chat_id%
:local str
:set str ($device . " - " . $status . " " . [/system clock get time])
/log warning $str
/tool fetch keep-result=no url=("https://api.telegram.org/bot" . $id . "/sendMessage\?chat_id=" . $chatid . "&text=" . $str)
}


Помещаем ее в автозагрузку при старте микротика

Код: Выделить всё

/system scheduler
add name=TelegramSend on-event="/system script run TelegramSend " start-time=startup


Собственно инициируем функцию

Код: Выделить всё

/system script run TelegramSend 


Дальше идем в Dude и создаем notification (к сожалению скриптом создать не получилось и потому тупо пишу параметры)

Name = Telegram
Enable = yes
Type = execute on server
script = [$TelegramSend device=[Device.Name] status=[Service.Status]]

Собственно все, на схеме добавляем уведомление на нужном устройстве.

Делалось на Dude v6.39rc7


Есть интересная задача и бюджет? http://mikrotik.site
vqd
Модератор
Сообщения: 3605
Зарегистрирован: 26 сен 2013, 14:20
Откуда: НСК
Контактная информация:

Собственно позвонил мне человек тему эту прочитавший и говорит:- "Вячеслав, хочу что бы сообщения отправлялись по списку chat_id (всем нашим админам) и что бы в случае недоступности сервера телеграм дублировались в виде СМС через УСБ модем, все тем же админам, вот вам благодарность моя за оперативность в решении"

Ну надо так чего же не сделать то. Со списками скрипт выкладывать не буду, а вот дублирование по средствам СМС через УСБ модем ловите. СМС уходит только в случае если сервер Телеграм не доступен по какой либо причине

Код: Выделить всё

:global TelegramSend do={
:local phone 89134552316
:local id %You_telegram_id%
:local chatid %Chat_id%
:local str
:set str ($device . " - " . $status . " " . [/system clock get time])
/log warning $str
:do {
/tool fetch keep-result=no url=("https://api.telegram.org/bot" . $id . "/sendMessage\?chat_id=" . $chatid . "&text=" . $str)
/log warning "Message send to Telegram"
} on-error={
/tool sms send usb3 phone-number=$phone message=$str channel=0
/log warning "Message send to SMS"
}
}


Есть интересная задача и бюджет? http://mikrotik.site
seregan4ek
Сообщения: 5
Зарегистрирован: 05 мар 2017, 00:45

День добрый!!! Имеем ROS 6.39.1 и Dude 6.39.1, подключенный к нему мтс модем Е173. Изучая вашу статью я попробовал ваш скрипт подстроить под себя, но что то не отрабатывает не могли бы Вы помочь? Остальные скрипты запускаемые через нетватч отрабатывают. Но там просто

Код: Выделить всё

/tool sms send usb4 "+7911хххххх" message="mtgw_down"
, если выводить

Код: Выделить всё

/system script print from=dude


Код: Выделить всё

[admin@MT-BRAS] > /system script print from=dude
Flags: I - invalid
 0   name="dude" owner="admin" policy=test last-started=may/26/2017 00:47:24
     run-count=7 source=
       :global dude do={
       :local str
       :set str ($device . " - " . $status . " " . [/system clock get time])
       /log warning $str
       :do {
       /tool sms send usb4 "+7911ххххххх" message=$str channel=0
       /log warning "Message send to SMS"
       }
       }
       


то $device . " - " . $status подкрашивает красным

П.С. Да и ни как не могу понять куда должны выводиться логи?


vqd
Модератор
Сообщения: 3605
Зарегистрирован: 26 сен 2013, 14:20
Откуда: НСК
Контактная информация:

Вы модем проверьте ибо где то СМС уходит через 0 канал, а где то и через может быть. Просто отправляйте себе СМС пока результата не получите.

Про логи не понял вопроса


Есть интересная задача и бюджет? http://mikrotik.site
Sertik
Сообщения: 1598
Зарегистрирован: 15 сен 2017, 09:03

Дальше идем в Dude и создаем notification (к сожалению скриптом создать не получилось и потому тупо пишу параметры)

Name = Telegram
Enable = yes
Type = execute on server
script = [$TelegramSend device=[Device.Name] status=[Service.Status]]

Собственно все, на схеме добавляем уведомление на нужном устройстве.

Делалось на Dude v6.39rc7
Не знаю как на Dude v6.39rc7 (подозреваю что также как и на более поздних современных версиях), но в notification нужно не забыть во вкладке Advanced оставить галки только для Up->Down и Down->Up иначе в Телеграмм будет валиться куча сообщений от функции при Unstable состояниях ...

И [Device.Name] передает из Dude в $device вовсе не имя устройства а слово "Script". Вероятно это уже косяк Микротиковских разрабов, как обычно ...


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
Ответить