Скрипты bash могут запускаться на исполнение изнутри конфигурационного дерева NSG следующими способами.
Любой скрипт может быть запущен в NSG Linux 2.x в качестве демона, т.е. системной службы. Управление демонами производится в узле .services.daemons
. При этом возможны две существенно различные ситуации, определяемые параметром auto-restart
:
auto-restart=true
, то система управления конфигурацией NSG сама следит за работой скрипта, запускает его после старта, перезапускает, если он по какой-то причине прекратит работу, и т.п.auto-restart=false
, то он запускается один раз при старте системы (после отработки конфигурации). При этом, если сам скрипт имеет внутри себя бесконечный цикл, то он может исполняться, теоретически, вечно. На практике же не стоит исключать ситуации, когда он по какой-либо причине может прекратить работу. В этом случае он так и останется выключенным, никто его перезапускать не будет. Запустить его заново можно либо вручную (применив данный узел конфигурации ещё раз), либо при следующем рестарте системы.ВНИМАНИЕ! При написании скриптов, содержащих бесконечный цикл, пользователю необходимо самостоятельно предусмотреть в них задержку между последовательными исполнениями, например, sleep секунды. В противном случае скрипт будет крутиться с максимальной скоростью и приводить к полной загрузке процессора устройства.
Функция netping
позволяет, в простейшем виде, организовать регулярную посылку ping на заданный IP-адрес. Для более надёжного обнаружения отказа запросы можно посылать сериями, по несколько запросов в одной попытке. Как только на один их запросов получен ответ, попытка считается успешной и дальнейшие запросы не посылаются, для экономии трафика. Если ответ не получен ни на один запрос, то попытка считается неудачной. После заданного числа неудачных попыток подряд хост считается недоступным, и в этом случае выполняется заданный failure-script
. После этого попытки послать ping продолжаются по прежнему графику; после первой удачной попытки считается, что соединение восстановлено, и выполняется соответствующий restore-script
.
Внутри сценария, обрабатывающего события, могут быть использованы переменные окружения $NSG_LAST_STATE, $NET_PING_EVENT, $NET_PING_DESTINATION_IP, $NET_PING_SOURCE_IP.
В более сложном варианте, вместо ping можно определить любой другой скрипт, который будет проверять наличие или отсутствие какого-либо состояния. Он указывается в параметре test-script
.
NSG Linux 2.x имеет специальную службу .services.event-handler
для мониторинга и обработки событий от различных системных объектов (например, интерфейсов — переход в UP или DOWN) и внешних датчиков. Любой скрипт можно назначить в качестве действия, вызываемого в качестве реакции на некоторое событие. В скрипте можно использовать переменные окружения $SENSOR, $PREVSTATE, $STATE.
В частности, в качестве события, приводящего к исполнению скрипта, может использоваться срабатывание таймера (через заданные промежутки времени) или планировщика событий (в заданное время суток/недели/месяца и т.п.).
ПРИМЕЧАНИЕ. Тело скрипта вводится в значения узлов конфигурационного дерева как одна строка. Эта строка, однако, может содержать в себе последовательности \n, \r. В этом случае при редактировании параметра его поле ввода автоматически преобразуется в двумерное окно. (В nsgsh — вызывается редактор nano.
Для удобства работы можно сначала ввести \n, выйти из поля ввода, и войти в него заново.
© Network Systems Group 2015–2024 | Отдел документации |