Скрипт отрабатывает в терминале, но не хочет из шедулера.

Обсуждение оборудования и его настройки
Ответить
AlexeyP
Сообщения: 11
Зарегистрирован: 29 июн 2018, 21:10

Учусь скриптописанию. Создал скрипт проверки нагрузки процессора с оповещением на почту, но столкнулся с рядом проблем: скрипт работает только из терминала, плюс не работают переменные (cpuload, cpuload2) как локальные. Подскажите - что не так?

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


#Проверяем наличие переменной(флаг загрузки процессора) и если надо, создаем её.
if (put [typeof $myVAR]="nothing") do={global myVAR 0}

#Проверяем нагрузку в промежутке времени.
local cpuload [/system resource get cpuload]
delay 3
local cpuload2 [/system resource get cpuload2]

#Сравниваем нагрузки, для исключения случайных всплесков активности.
#if - Также сверяемся, новая это загрузка или нет.
#При новой загрузке пишем в лог,
#и шлем сообщение на почту сообщение,
#отмечаем, что загрузка началась.
#else - Если загрузки нет или она спала, то меняем флаг загрузки на нет. Так же можно прикрутить запись в лог и отправку мыла.
if ( $loadcpu > 0 and $loadcpu2 > 0 ) do={if ($myVAR = 0) do={ log error "cpu_err $loadcpu2 %"; tool e-mail <sende-mail>; set $myVAR 1} } else= {set $myVAR 0}

Переработал код, но все равно с локальными переменными не работает ни где, при запуске скрипта в первой строке обнуляет переменную.

Использую RB951G-2HnD 6.41.2 (stable)


Ответить