Простейший информер на Automator

в 15:19, , рубрики: Action Script, automator, mac os x, shell, метки: , ,

Automator

В первом своем посте на данном ресурсе хотел бы описать простейший пример создания информера, с помощью колоссально удобной утилиты Automator, идущей в комплекте с Mac Os X.

Буквально на днях, при радикальном снижении уличной температуры в Москве у меня внезапно появилась задача: визуально отслеживать температуру в серверном помещении (а точнее в стойке), с определенным интервалом, т.к. кондиционер, обслуживающий помещение, отказался работать при T < -15 ºC.


Для начала, сразу поясню, что сам по себе вопрос контроля температуры серверной комнаты, стойки, каждого сервера в ней, а также еще пары сотен иных параметров мною комплексно решен установкой системы мониторинга Zabbix. И надо сказать, она отлично с этим справляется, не только скрупулезно собирая все эти данные и храня логи всех изменений этих параметров, но также и выполняя информирование, в случае достижения контрольных или критических точек (триггеров). Однако, далеко не всегда, получение почтовых сообщений или СМС бывает удобно, особенно однотипных, как в моем случае, содержащим конкретную величину, незначительно меняющуюся со временем — в данном случае, температуру комнаты. И поэтому я решил визуализировать для себя эту информацию, благо процесс занимает 5 минут и с десяток кликов, а в итоге получаем удобно появляющиеся уведомления с нужным параметром, причем интервал их появления настраивается, а история — удобно хранится в списки сообщений центра уведомлений Mac Os X.

Источником информации я выбрал Ambient Sensor одного из серверов стойки. Это сервер Supermicro, оборудованный интерфейсом IPMI.
Для начала открываем интерфейс программы:
Простейший информер на Automator
Выбираем создание нового процесса, а затем, в разделе «Действия» библиотеки выбираем подраздел утилиты — по сути мы будем пользоваться только ими.

Собственно, интерфейс программы довольно прост, слева у нас библиотека действий или переменных, которые мы можем использовать при создании пошаговых процессов, а справа поле формирования тела процесса, в которое перетаскиваются необходимые нам действия и переменные из библиотеки в том хронологическом порядке, в котором они должны происходить в рамках формируемого процесса.
Простейший информер на Automator
Итак, основной запрос, как я уже указывал ранее, будет возвращать нам температуру одного из сенсоров сервера, находящегося в стойке. Команда, возвращающая ее в моем случае имеет следующий вид:

ipmitool -H xxx.xxx.xxx.xxx -U LOGIN -P PASSOWRD sensor get 'Sensor Name' |grep 'Sensor Reading' |grep -o '[0-9][0-9]'

где xxx.xxx.xxx.xxx это IP-адрес интерфейса IPMI
LOGIN и PASSWORD — это логин и пароль доступа к интерфейсу.
Sensor Name — это название сенсора, с которого предполагается считывать данные. В моем случае это был «System Temp».
Утилита grep в данном контексте используется для возврата удобночитаемого двузначного цифрового значения температуры сенсора.

Чтобы процесс выполнял в shell данную команду, перетаскиваем соответствующее действие из библиотеки в поле процесса:

Простейший информер на Automator

Заметьте — в правом верхнем углу есть флажок, позволяющий либо помещать результат исполнения скрипта в stdin, либо возвращать как аргумент для дальнейших действий. Так как мы планируем использовать результат в дальнейшем — то выбираем возвращать «как аргумент».
А поскольку мы хотим использовать полученное значение в других операциях, есть смысл создать переменную, которой и будет присвоено полученное выше значение, для этого выбираем действие «Установить значение переменной»:
Простейший информер на Automator

Кликнув на поле «новая переменная» можно задать ей удобночитаемое название, например «Температруа». Заметьте также, что между двумя действиями стоят стрелки, указывающие направление последовательности действий.

Простейший информер на Automator

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

Также, для удобства, рекомендую добавить дополнительные переменные из библиотеки, я взял оттуда точное время. А вообще там есть очень много чего…
Вкладка библиотеки системных переменных находится справа от вкладки «Действия»:

Простейший информер на Automator
Ну и далее остается заполнить само тело сообщения.

Кроме того, у нас есть задача зациклить этот процесс, с тем, чтобы запрос осуществлялся с неким интервалом. Для этого из библиотеки действия есть смысл перетащить действие «приостановить», в котором можно указать время приостановки процесса. Замечу (и это важно) что изначально пытался вместо 30 минут выставить 1800 секунд, однако процесс отрабатывал некорректно, собственно поэтому в действии можно выставить размерность задержки в секундах, минутах или часах. Насколько я понял мануал, счетчик ограничен 1000-ю единиц.

Ну и последнее, необходимое нам действие — это цикл, ибо нам необходимо зациклить процесс. Для этого ставим в конец процесса действие «Петля».
В этом действии есть несколько настраиваемых параметров, а именно: обязательный запрос пользователя для продолжения действия, который можно заменить полностью автоматическим циклом (собственно он нам и нужен). Второй параметр — это точка возвращения петли, нам нужно вернуться к самому началу процесса, поэтому выбираем «Использовать начальный вход». Ну и третий, довольно важный параметр — «остановить после». Этот параметр определяет, в какой момент заканчивается действие петли. Вариантов здесь два, либо после некоего интервала времени, либо после некоего количества циклов. К сожалению, сделать бесконечный цикл нельзя, установка этого параметра в «ноль» как для минут, так и для «раз» не приводит к этому (цикл выполнится лишь раз), поэтому проще выбрать то, что Вам по душе. Максимально значение счетчика также 1000 единиц. Для себя я лично выбрал 1000 раз, это 1000 циклов. Замечу, что если этого не достаточно, ставьте следующую петлю сразу после первой, это будет исполнять цикл в цикле, а это 1 млн. итераций, и т.д.

В итоге, финальная версия процесса выглядит вот так:

Простейший информер на Automator

А выдаваемые сообщения, во первых, удобно визуализируются на рабочем столе — выскакивая с нужной частотой, при этом вы всегда можете посмотреть их историю, которая выглядит примерно вот так:
Простейший информер на Automator

Теперь остается лишь запустить процесс. И он начнет выполняться автоматором, а чтобы он не мешал в Dock — правый клик на иконке Automator в Dock и далее «Скрыть».

Основная задача этого поста рассказать о том, что с помощью такого замечательного инструмента, как Automator можно автоматизировать не только весьма сложные задачи, требующие многократного повторения рутинных действий, но и выполнять периодические задачи, с довольно удобной визуализацией данных запросов.

Автор: Biochemist

Источник


  1. Bench:

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


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js