Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Новинка
Распродажа
Новости
Доставка
Оплата
Загрузки
  • Прошивки
    • 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
    Скрипт для мониторинга температуры

    Скрипт для мониторинга температуры

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Скрипт для мониторинга температуры, RouterOS
     
    simeitg
    Guest
    #1
    0
    10.01.2018 11:44:00
    Привет! Я часто использовал этот форум, чтобы решить множество проблем, и сегодня хочу немного помочь. Вот небольшой скрипт для мониторинга температуры CCR 1036: если всё в порядке — отправляет письмо, если температура выше допустимой — шлёт СМС. Здесь, в Бразилии, летом температура может очень быстро подниматься, поэтому хочу знать, нормально ли работает кондиционер!

    После скрипта нужно просто настроить планировщик, чтобы он запускался каждые 30 минут.

    :global tcasinha [/system health get temperature]
    :local emessage ("Температура " . [:pick $tcasinha 0 2] . “.” . [:pick $tcasinha 2 3])
    :if ($tcasinha >= 40) do={  
     :log info $tcasinha  
     /tool sms send usb3 “yourcellphonehere” message=$emessage  
    } else={  
     /tool e-mail send to=“youremailhere” subject=“TEMP_CASINHA” body=$emessage start-tls=yes  
    }
     
     
     
    plisken
    Guest
    #2
    0
    02.02.2018 00:50:00
    Работает как часы, спасибо.
     
     
     
    nichky
    Guest
    #3
    0
    02.02.2018 03:55:00
    Отлично, спасибо!
     
     
     
    aacable
    Guest
    #4
    0
    03.03.2018 16:18:00
    Выглядит неплохо. Хотелось бы дать пару замечаний по скрипту. А что если запланировать его запускать каждые 5 минут? Скрипт запускается, делает следующее: проверяет температуру, сравнивает с пороговым значением, если условие выполнено — записывает в лог и отправляет SMS-оповещение. Через 5 минут скрипт снова запускается и повторяет всё то же самое — проверяет температуру, сравнивает, если нужно — снова пишет в лог и отправляет SMS. И так каждые 5 минут.

    А что если температура всё время выше порога, а на поддержке никого нет, чтобы это исправить? Тогда вы будете получать раздражающие сообщения раз за разом. Чтобы этого избежать, можно добавить условие IF: если порог достигнут, отправляем SMS и создаём пустой файл sms_sent.txt. Перед отправкой SMS проверяем — если файл sms_sent.txt существует, то SMS не отправляем, потому что уже отправляли, а в лог просто пишем предупреждение. Как только температура приходит в норму, удаляем файл sms_sent.txt. Также можно добавить дополнительную проверку, чтобы после нормализации температуры отправлять SMS о восстановлении только один раз.
     
     
     
    theycallmetimmy
    Guest
    #5
    0
    06.09.2019 12:58:00
    Я знаю, что этому посту больше года, но раз на него никто не ответил, решил сделать это я. Это ответ aacable. Вот несколько примеров скриптов, которые я создал для мониторинга температуры системы на MikroTik, записи текущей температуры в лог и отправки уведомлений при достижении разных температурных порогов. Скрипт также сбрасывает себя, чтобы отправлять только одно уведомление на каждый температурный порог, пока температура не вернётся в норму.

    Первый скрипт запущен на RB3011 и является прямым экспортом из MikroTik с WinBox 6.45.3. Скрипт считывает только температуру системы, а не процессора.

    /system script add dont-require-permissions=no name=Check-system-Temp owner=admin policy= ftp,reboot,read,write,policy,test,password,sniff,sensitive source=“:global _"tempstatus"\r\n:global "templaststatus"\r\n:global "systemtemp" [/system health get temperature]\r\n:if (systemtemp > "50") do={:set "tempstatus" "system temp is too high"}\r\n:if (systemtemp > "60") do={:set "tempstatus" "system temp is critical"}\r\n:if (systemtemp < "40") do={:set "tempstatus" "system temp is within spec"}\r\n:if ($"tempstatus" != $"templaststatus") do {\r\n/tool e-mail send to="your-email-here@email.com" subject=("This router $[/system identity get name] has a temperature alert. $[/system clock get date] $tempstatus") body=("This router $[/system identity get name] has a temperature alert. $[/system clock get date] $tempstatus - $systemtemp Celcius")\r\n:log info "Email sent about system $tempstatus status"\r\n:set "templaststatus" $"tempstatus"\r\n}“

    Вот тот же скрипт, но для «простых смертных», без указания политик разрешений и имени скрипта:

    :global “tempstatus”  
    :global “templaststatus”  
    :global “systemtemp” [/system health get temperature]
    :if (systemtemp > “50”) do={:set “tempstatus” “system temp is too high”}  
    :if (systemtemp > “60”) do={:set “tempstatus” “system temp is critical”}  
    :if (systemtemp < “40”) do={:set “tempstatus” “system temp is within spec”}  
    :if ($“tempstatus” != $“templaststatus”) do {  
    /tool e-mail send to="your-email-here@email.com" subject=(“This router $[/system identity get name] has a temperature alert. $[/system clock get date] $tempstatus”) body=(“This router $[/system identity get name] has a temperature alert. $[/system clock get date] $tempstatus - $systemtemp Celcius”)
    :log info “Email sent about system $tempstatus status”  
    :set “templaststatus” $“tempstatus”  
    }

    А вот планировщик, который запускает этот скрипт каждые 10 минут для проверки изменений. Это прямой экспорт из MikroTik.

    /system scheduler add interval=10m name=“Check system Temp” on-event=Check-system-Temp policy= ftp,reboot,read,write,policy,test,password,sniff,sensitive start-time=startup

    Ниже скрипт, который проверяет и температуру системы, и процессора, записывает данные в лог и отправляет письма при достижении каждого температурного порога. Запускался на CCR1036 с WinBox 6.42.6.

    :global “tempstatus”  
    :global “templaststatus”  
    :global “cputempstatus”  
    :global “cputemplaststatus”  
    :global “systemtemp” [/system health get temperature]
    :global “cputemp” [/system health get cpu-temperature]
    :if (systemtemp > “50”) do={:set “tempstatus” “system temp is too high”}  
    :if (systemtemp > “60”) do={:set “tempstatus” “system temp is critical”}  
    :if (systemtemp < “40”) do={:set “tempstatus” “system temp is within spec”}  
    :if (cputemp > “65”) do={:set “cputempstatus” “cpu temp is too high”}  
    :if (cputemp > “75”) do={:set “cputempstatus” “cpu temp is critical”}  
    :if (cputemp < “64”) do={:set “cputempstatus” “cpu temp is within spec”}  
    :if ($“tempstatus” != $“templaststatus”) do {  
    /tool e-mail send to="your-email-here@email.com" subject=(“This router $[/system identity get name] has a temperature alert. $[/system clock get date] $tempstatus”) body=(“This router $[/system identity get name] has a temperature alert. $[/system clock get date] $tempstatus - $systemtemp Celcius”)
    :log info “Email sent about system $tempstatus status”  
    :set “templaststatus” $“tempstatus”  
    }  
    :if ($“cputempstatus” != $“cputemplaststatus”) do {  
    /tool e-mail send to="your-email-here@email.com" subject=(“This router $[/system identity get name] has a temperature alert. $[/system clock get date] $cputempstatus”) body=(“This router $[/system identity get name] has a temperature alert. $[/system clock get date] $cputempstatus - $cputemp Celcius”)
    :log info “Email sent about system $cputempstatus status”  
    :set “cputemplaststatus” $“cputempstatus”  
    }

    Можно сделать такой же планировщик для скрипта, мониторящего и системную, и процессорную температуру, с запуском каждые 10 минут. Я столько раз переделывал этот скрипт, взятый когда-то из интернета, что уже и забыл, откуда он вообще. Видимо, исходный скрипт, который я нашёл, был гораздо проще и предназначался для совсем другой задачи.
     
     
     
    Jotne
    Guest
    #6
    0
    09.09.2019 05:05:00
    Пожалуйста, отредактируйте свой пост. Выделите блок кода и нажмите кнопку </> над полем ввода, чтобы оформить скрипты в код. Вот пример:  
    :global “systemtemp” [/system health get temperature]
    :global “cputemp” [/system health get cpu-temperature]

    Скрипт также должен проверять, возвращают ли эти две команды значение, так как hAP lite не возвращает ничего, hex показывает температуру, но не показывает cpu-temperature, поэтому они могут не сработать.  

    Зачем использовать глобальную переменную? Здесь не лучше ли использовать локальную?
     
     
     
    theycallmetimmy
    Guest
    #7
    0
    09.09.2019 11:31:00
    Спасибо за подсказку про теги кода, Jotne, я исправил свой первоначальный пост. Что касается использования :global вместо :local, то особой причины не было, кроме того, чтобы видеть вывод скрипта на вкладке script>Environment. Так можно проверить, что скрипт правильно выводит данные. Плюс, поскольку я использую global, я могу брать показания температуры для других скриптов, если понадобится. Мой скрипт не проверяет возвращаемые значения, потому что я писал его для RB3011 и CCR1036. Любой может изменить его под любой MikroTik, который захочет использовать. Я написал два примера скриптов: один для проверки системной температуры, другой — для проверки системной и CPU температуры.
     
     
     
    Jotne
    Guest
    #8
    0
    09.09.2019 12:42:00
    Я всегда запускаю скрипт из командной строки с помощью :put, чтобы посмотреть, что происходит, вот так: {
    :local systemtemp [/system health get temperature]
    :put $systemtemp
    } P.S. Не цитируйте полностью сообщение выше вас. Чтобы ответить на сообщение, нажмите «Post Reply» под постом.
     
     
     
    theycallmetimmy
    Guest
    #9
    0
    09.09.2019 12:54:00
    Хорошо. Как я и сказал, вы можете настроить скрипт так, как хотите, для любого MikroTik, который используете.
     
     
     
    nikpefan
    Guest
    #10
    0
    07.02.2018 07:42:00
    В ситуации, когда на вашем роутере установлены другие планировщики, как планировщик узнает, какой именно скрипт запускать?
     
     
     
    aacable
    Guest
    #11
    0
    11.09.2019 06:46:00
    Отлично получилось, дружище!
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2026 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры