Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Новинка
Распродажа
Новости
Доставка
Оплата
Загрузки
  • Прошивки
    • WinBox
    • RouterOS
    • Мобильные приложения MikroTik
    • Архив
  • RouterOS
  • Мобильные приложения MikroTik
  • Архив
Форум
Настройка
    info@mikrotik.moscow
    +7 495 320-55-52
    Заказать звонок
    Mikrotik.moscow
    Каталог
    • Акции
      Акции
    • Маршрутизаторы
      Маршрутизаторы
    • Коммутаторы
      Коммутаторы
    • Радиомосты и уличные точки доступа
      Радиомосты и уличные точки доступа
    • Wi-Fi для дома и офиса
      Wi-Fi для дома и офиса
    • LTE/5G
      LTE/5G
    • Powerline адаптеры
      Powerline адаптеры
    • IoT устройства
      IoT устройства
    • Оборудование 60 ГГц
      Оборудование 60 ГГц
    • Материнские платы RouterBOARD
      Материнские платы RouterBOARD
    • Корпуса
      Корпуса
    • Интерфейсы
      Интерфейсы
    • SFP/QSFP трансиверы
      SFP/QSFP трансиверы
    • Аксессуары
      Аксессуары
    • Антенны
      Антенны
    • Архив
      Архив
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Скачать WinBox Скачать Прошивки Форум > RouterOS Форум > SwOS Форум > Железо
    Mikrotik.moscow
    Каталог
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Mikrotik.moscow
    Телефоны
    +7 495 320-55-52
    Заказать звонок
    0
    0
    0
    Mikrotik.moscow
    • +7 495 320-55-52
      • Назад
      • Телефоны
      • +7 495 320-55-52
      • Заказать звонок
    • info@mikrotik.moscow
    • г. Москва, ул. Бакунинская, 84
    • Пн-Пт: 09-00 до 18-00
      Сб-Вс: выходной


    • Кабинет
    • 0 Сравнение
    • 0 Избранное
    • 0 Корзина
    Главная
    Форум
    Форум
    RouterOS
    PUSHOVER — готовый скрипт для MikroTik для отправки сообщений

    PUSHOVER — готовый скрипт для MikroTik для отправки сообщений

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    PUSHOVER — готовый скрипт для MikroTik для отправки сообщений, RouterOS
     
    dasiu
    Guest
    #1
    0
    28.06.2018 21:19:00
    Я только что написал скрипт (функцию), чтобы отправлять сообщения Pushover напрямую с MikroTik, без использования e-mail, а через прямое API (быстрее). Просто выполните один раз при загрузке для «установки» функций:

    :global urlEncode do={
     :local output ""
     :local input [:toarray $1]
     :if ([:len $input] > 0) do={
       :local input1 [:tostr [:pick $input 0]]
       :local conversion {" "="%20";"!"="%21";"\""="%22";"#"="%23";"\$"="%24";"%"="%25";"&"="%26";"'"="%27";"-"="%2D";"("="%28";")"="%29";"*"="%2A";"+"="%2B";","="%2C";"/"="%2F";":"="%3A";";"="%3B";"<"="%3C";">"="%3E";"="="%3D";"?"="%3F";"@"="%40";"["="%5B";"]"="%5D";"{"="%7B";"}"="%7D"};
       :for i from=0 to=([:len $input1] - 1) do={
         :local char [:pick $input1 $i]
         :if ([:typeof ($conversion->[:tostr $char])]!="nothing") do={:set $char ($conversion->[:tostr $char]);}
         :set output ($output . $char)
       }
       :set output [:tostr $output]
       :set output [:toarray $output]
     }
     :return $output
    }

    :global pushover do={
     :global urlEncode;
     :if ([:typeof $message]!="nothing") do={
       :local api "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
       :local user "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
       :local urlmessage [$urlEncode $message];
       :local string "token=$api&user=$user&message=$urlmessage";
       :if ([:typeof $title]!="nothing") do={:set $string ($string . "&title=$[$urlEncode $title]");}
       :if ([:typeof $priority]!="nothing") do={:set $string ($string . "&priority=$priority");}
       :if ([:typeof $sound]!="nothing") do={:set $string ($string . "&sound=$sound");}
       /tool fetch mode=https url="https://api.pushover.net/1/messages.json" http-method=post http-data="$string";
     }
    }

    Конечно, в переменных «api» и «user» у меня свои ключи от Pushover (вам нужно создать приложение в панели Pushover). Тогда я могу просто сделать:

    $pushover message="Это простое сообщение Pushover."

    Или более продвинуто:

    :local title "Важное сообщение от роутера $[/system identity get name]";
    :local message "Пишу, чтобы сообщить, что моя температура — $[/system health get temperature] градусов Цельсия!"
    $pushover title=$title message=$message priority=1 sound="tugboat"

    Я взял функцию urlEncode, которую написали несколько человек в этой ветке.
     
     
     
    cantanko
    Guest
    #2
    0
    03.04.2019 18:12:00
    Спасибо за это — этот кусок кода оказался очень полезным!
     
     
     
    danielcada
    Guest
    #3
    0
    03.03.2020 17:16:00
    Хорошо работает на FW 6.45.5, включая получение PUSHOVER через NETWATCH. На FW 6.46.4 работает только при ручном запуске скрипта для отправки PUSHOVER, но не работает отправка PUSHOVER из NETWATCH. Есть какие-то предложения?
     
     
     
    dreamind
    Guest
    #4
    0
    14.04.2020 23:15:00
    Если в скрипте на команде fetch указать keep-result=no, всё работает. Также убедитесь, что для скриптов, которые запускаете через netwatch, установлена политика вроде policy=read,write,test.
     
     
     
    Belikearu
    Guest
    #5
    0
    14.04.2020 23:37:00
    Как именно это сделать? Вставить скрипт в терминал Winbox? А что насчёт API-ключей? Не могли бы вы пояснить подробнее? Спасибо!
     
     
     
    lacibsd
    Guest
    #6
    0
    02.05.2021 00:43:00
    @Belikearu, в Winbox или веб-интерфейсе это можно разместить в разделе System->Scripts. @dasiu, классный скрипт, как раз искал интеграцию с pushover.
     
     
     
    tmiklas
    Guest
    #7
    0
    03.05.2021 10:04:00
    Потрясающе — спасибо!
     
     
     
    Lilarcor
    Guest
    #8
    0
    21.05.2021 06:06:00
    Я пытался использовать это в net watch, но ничего не сработало, даже когда добавил keep-result=no в скрипт.
     
     
     
    anav
    Guest
    #9
    0
    22.05.2021 01:33:00
    Я использую Telegram, чтобы получать сообщения от моего маршрутизатора. Pushover проще и удобнее в использовании?
     
     
     
    Lilarcor
    Guest
    #10
    0
    14.10.2021 05:35:00
    Команда $pushover message=“xyz” работает в терминале, но не работает в скриптах. Обновление: добавил :global pushover, и теперь могу использовать $pushover.
     
     
     
    RandyRiver88
    Guest
    #11
    0
    26.05.2022 20:52:00
    Привет, где ты это исправил? У меня получается отправлять через терминал, но в скриптах нет... Можешь подсказать, какую строку нужно поменять? Спасибо.
     
     
     
    rextended
    Guest
    #12
    0
    26.05.2022 21:02:00
    Просто внимательно прочитайте предыдущее сообщение…
     
     
     
    RandyRiver88
    Guest
    #13
    0
    27.05.2022 02:03:00
    Публикация неясна. В ней не указано, куда именно это добавить. Правильный ответ был бы: добавьте :global pushover в скрипт, в котором вызывается $pushover. Не нужно быть занудой.
     
     
     
    rextended
    Guest
    #14
    0
    27.05.2022 07:29:00
    Я был полезен, понял? Вот теперь ты внимательно это прочитал…
     
     
     
    esj
    Guest
    #15
    0
    01.07.2024 12:41:00
    Спасибо за скрипт. Работает отлично. Для теста я запускаю скрипт ниже: global pushover $pushover message=“Это простое сообщение Pushover.”
     
     
     
    Amm0
    Guest
    #16
    0
    28.06.2025 17:23:00
    Pushover также поддерживает JSON в качестве входных данных. За 5 лет с момента оригинального сообщения Mikrotik добавил поддержку JSON в скрипты RouterOS (начиная с версии 7.13). Хотя я уверен, что существующий скрипт работает нормально, я переписал его так, чтобы он принимал массив RouterOS с любыми значениями, разрешёнными API Pushover. Поскольку новый [:serialize] автоматически обрабатывает типы и экранирование при преобразовании массива RouterOS в JSON, который нужен Pushover, код становится значительно проще:

    :global npushover do={
       :local url "https://api.pushover.net/1/messages.json"
       :local headers "Content-Type: application/json"
       :local reqdata [:toarray ""]
       :if ([:typeof $1]="array") do={:set reqdata $1} else={
           :error "\$$0 требует массив значений, смотрите https://pushover.net/api"
       }
       :local json [:serialize to=json $reqdata]
       :local resp [/tool/fetch url=$url http-data=$json http-header-field=$headers output=user as-value]
       :local respdata [:deserialize from=json ($resp->"data")]
       :if (($respdata->"status")=1) do={
           /log/debug "$0 успешно отправил запрос $($respdata->"request")"
       } else={
           /log/warning "$0 неудача, получено: $[:tostr $resp]"
           :error $resp
       }
    }

    Чтобы отправить сообщение через pushover с помощью вышеописанной функции $npushover и массива, который допускает любые поддерживаемые атрибуты, включая url или priority, используйте так:

    $npushover ({
       user="u8xxxxxxxxxxx"
       token="acyqxxxxxxxxxxxxxxx"
       message="Возможно, немного HTML"
       title="Тестовое сообщение"
       html=1
       sound="magic"
       priority=0
       url="https://router.lan/rest/system/resource"
       "url_title"="/system/resources"
    })

    Смотрите https://pushover.net/api для возможных и разрешённых значений. Валидация не предусмотрена, так задумано. Ошибки выводятся и логируются, что должно помочь понять правильные значения. Такие параметры, как “priority”, могут иметь дополнительные атрибуты вроде “retry”, поэтому валидация может их блокировать или сильно усложниться.
     
     
     
    davorjs
    Guest
    #17
    0
    06.07.2024 01:28:00
    Большое спасибо, Ammo, твой скрипт как раз кстати, ведь я узнал про Pushover всего два дня назад. Намного проще, чем Telegram. Спасибо, Dave.
     
     
     
    esj
    Guest
    #18
    0
    07.07.2024 16:50:00
    Спасибо, Amm0. Вопрос один: как добавить информацию из RouterOS в сообщение? Например, interface/lte/monitor lte1. Я пробовал так:

    global npushover  
    $npushover ({  
      user="private"  
      token="private"  
      message="Mikrotik SXT перезагрузился nPushover $[interface/lte/monitor lte1 duration=2]"
      title="MikroTik SXTR"  
      html=1  
      sound="magic"  
      priority=0  
      url="https://192.168.x.1"  
      "url_title"="MikroTik"  
    })

    Он выполняется, но информация с LTE не появляется в сообщении. Буду признателен за любые подсказки.
     
     
     
    Amm0
    Guest
    #19
    0
    28.06.2025 17:21:00
    :global npushover  
    $npushover ({  
           user="private"  
           token="private"  
           message="Mikrotik SXT перезагрузился nPushover $[interface/lte/monitor lte1 duration=2]"
           title="MikroTik SXTR"  
           html=1  
           sound="magic"  
           priority=0  
           url="https://192.168.x.1"  
           "url_title"="MikroTik"  
    })  
    … и оно выполняется, но в сообщении нет данных от LTE. Буду признателен за любые советы. Все команды с “monitor” хитрые, потому что это как “цикл for”… Поэтому нужно убрать “duration” и вместо него использовать “once”.  

    :global npushover  
    $npushover ({  
           user="private"  
           token="private"  
           message="Mikrotik SXT перезагрузился nPushover $[interface/lte/monitor lte1 once as-value]"
           title="MikroTik SXTR"  
           html=1  
           sound="magic"  
           priority=0  
           url="https://192.168.x.1"  
           "url_title"="MikroTik"  
    })  

    “once” заставляет /interface/lte/monitor вернуть только один набор значений для вставки в сообщение. Можно использовать и duration, но тогда нужно сначала собрать данные monitor LTE в новую переменную, а потом использовать эту переменную в сообщении.
     
     
     
    esj
    Guest
    #20
    0
    09.07.2024 09:57:00
    Спасибо за это. Ни один из вариантов кода $[interface/lte/monitor lte1 once] вообще не добавляет данные или содержимое в сообщение (даже сам код не появляется). Это правильный способ получить данные MikroTik в отправляемом сообщении? Полученное сообщение прикреплено (извините, не могу приложить само сообщение) https://imgur.com/xlI5yVq

    ОБНОВЛЕНИЕ: Зато этот вариант работает — message=“Mikrotik SXT перезагружен nPushover $[/system clock get time] $[/system clock get time] $[/system identity get name]”
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2026 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры