Скрипт мониторинга (версия из второго сообщения полностью работоспособна, из первого не актуальна)

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

используете микротовский скриптинг для мониторинга?

нет, это баловство
1
33%
да, у меня свой скрипт это очень удобно
1
33%
попробую твой скрипт
1
33%
 
Всего голосов: 3
Sertik
Сообщения: 1658
Зарегистрирован: 15 сен 2017, 09:03

Спасибо автору. Очень не плохо. Заслуживает внимания.


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
Аватара пользователя
Brook
Сообщения: 158
Зарегистрирован: 24 май 2022, 00:29

Автор просил делиться мыслями, нам не жалко. Не критики ради, а обучения для.

Первый вариант не смотрел, второй разобрал. Скрипт создает netwatch-и с типом simple и прописывает код в up-script и down-script и вот там вся логика.

Разберем на примере down-script:

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

:local state [tool netwatch get value-name=comment [find host=\"$v\"]];
Здесь вы получаете состояние netwatch путем поиска этой записи по полю host, получая из нее комментарии. Далее по скрипту вся работа идет с ними.

Возник вопрос зачем через комментарии это делать, если можно обратиться к полю status этой записи, раз уже нашли её. Но можно вообще ничего не искать. Поиск - операция затратная.

Все нужные переменные уже есть в памяти во время выполнения скрипта. Можете в этом убедиться прописав в up или down:

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

:log info ("host:" . $host)
:log info ("type:" . $type)
:log info ("interval:" . $interval)
:log info ("status:" . $status)
:log info ("done-tests:" . $"done-tests")
А если все переменные есть, то не нужно ничего искать. Скрипт и так знает о себе всё.

Дополнительные пинги только мешают, лучше выставить задержку больше чем $interval, а после нее проверять $status и уже в зависимости от этого принимать решение об отправке в Телеграм.

Скрипт, который идет в up и down можно сильно сократить и сделать одинаковым для обоих. А можно использовать test-script. Это тот код, который будет выполняться через каждый $interval.

Что касается глобальных переменных, то они действительно недоступны из netwatch. Но есть обходной путь. Можно вместо кода прописать имя скрипта, который будет выполнен, и там уже они будут доступны.

Причем все локальные переменные из netwatch будут доступны во внешнем скрипте, потому что он использует контекст скрипта netwatch .

Чтобы убедиться в этом, создайте скрипт с именем script1 и правами read, write, test, reboot, пропишите в нем код, который выше. В поле test для netwatch пропишите имя script1. Все переменные все-равно будут выведены в лог.


Ответить