024 Системный Администратор 11 2004

Page 11

администрирование mailq | tail -n 1 | cut -f5 -d " " exit 0

Теперь смотрим, что у нас находится внутри ветки .iso.org.dod.internet.private.enterprises.ucdavis.extTable.extEntry. extNames.1 = STRING: users extNames.2 = STRING: mailqueue extCommand.1 = STRING: /bin/sh /usr/bin /count_users.sh extCommand.2 = STRING: /bin/sh / usr/bin/count_mail.sh extResult.1 = INTEGER: 0 extResult.2 = INTEGER: 0 extOutput.1 = STRING: 1 extOutput.2 = STRING: 2 extErrFix.1 = INTEGER: 0 extErrFix.2 = INTEGER: 0 extErrFixCmd.1 = STRING: extErrFixCmd.2 = STRING:

Нас интересует extOutput, в которой находится первая строка из того, что скрипт выводит на экран, и extResult с кодом возврата скрипта, переданным командой exit. Судя по приведенному выше списку значений, у нас в системе находится один пользователь, а в почтовой очереди есть два письма. Сервисы для проверки результатов работы обоих скриптов будут выглядеть так: define service{ use generic-service host_name Linux service_description Users is_volatile 0 check_period 24x7 check_command check_snmp_oid ↵ !.1.3.6.1.4.1.2021.8.1.101.1!InK12345!20!30!users } define service{ use generic-service host_name Linux service_description Mail queue is_volatile 0 check_period 24x7 check_command check_snmp_oid ↵ !.1.3.6.1.4.1.2021.8.1.101.2!InK12345!40!80!messages }

Конечно, в реальном мире скрипты-проверки могут быть гораздо сложнее и возвращать с помощью команды exit коды, указывающие на те или иные проблемы в сети. В этом случае есть возможность с помощью добавочной опции execfix указывать на программу, запускаемую snmpd и отвечающую за попытки автоматического исправления ошибок, обнаруженных проверочным скриптом. К примеру, таким образом можно описать программу исправления аварийного положения с почтовой очередью.

echo "first line" echo "second line" exit 5

В результате осмотра ветви .1.3.6.1.4.1.2021.50 можно увидеть следующие данные: .1.3.6.1.4.1.2021.50.1.1 = INTEGER: 1 .1.3.6.1.4.1.2021.50.2.1 = STRING: "multi_line_test" .1.3.6.1.4.1.2021.50.3.1 = STRING: "/bin/sh /tmp/mytest.sh" .1.3.6.1.4.1.2021.50.100.1 = INTEGER: 5 .1.3.6.1.4.1.2021.50.101.1 = STRING: "first line" .1.3.6.1.4.1.2021.50.101.2 = STRING: "second line" .1.3.6.1.4.1.2021.50.102.1 = INTEGER: 0 .1.3.6.1.4.1.2021.50.103.1 = ""

Как видите, и такой функционал нам вполне доступен. Следующая возможность, на которую хотелось бы обратить ваше внимание, – функция проверки размера файла. Итак, добавляем в snmpd.conf вот такую надпись: file /tmp/tinka.txt 12

тем самым указывая, что файл не должен быть более 12 Кб. Затем смотрим, что хранит в себе ветка .iso.org.dod.internet .private.enterprises.ucdavis.fileTable.fileEntry: fileIndex.1 = INTEGER: 1 fileName.1 = STRING: /tmp/tinka.txt fileSize.1 = INTEGER: 15 kB fileMax.1 = INTEGER: 12 kB fileErrorFlag.1 = INTEGER: true(1) fileErrorMsg.1 = STRING: /tmp/tinka.txt: ↵ size exceeds 12kb (= 15kb)

Написать соответствующий сервис, в общем-то, несложно, если мы хотим самостоятельно проверять размер файла. define service{ use generic-service host_name Linux service_description size of /tmp/tinka.txt is_volatile 0 check_period 24x7 check_command check_snmp_oid ↵ !.1.3.6.1.4.1.2021.15.1.3.1!InK12345!12!20!kbytes }

Но есть и другой путь: можно опереться на появление кода и сообщения об ошибке в fileErrorFlag и fileErrorMsg. И все же мне кажется, что это не очень удобно. Напоследок хотелось бы рассказать о возможности слежения за количеством процессов того или иного приложения, работающих в системе.

execfix mailqueue /bin/sh /usr/bin/repair_mailqueue.sh

Конечно, эта возможность опциональна, но упомянуть о ней все же стоило. Любопытный читатель может спросить, а что делать, если мой скрипт выводит несколько строк полезной информации, и мне нужно считать их все до единой. Я отвечу, что это не проблема. Нужно всего лишь добавить в snmpd.conf вот такую строку: exec .1.3.6.1.4.1.2021.50 multi_line_test /bin/sh ↵ /tmp/mytest.sh

И создать скрипт /tmp/mytest.sh следующего содержания.

№11(24), ноябрь 2004

proc httpd 3 6 proc automount 1 1 proc csserver 2

Этими строками мы указываем snmpd, что в системе должно быть от двух до четырех процессов httpd и только один automount. В то же время программа csserver вообще может быть не запущена, но если она все же работает, то процессов не должно быть более двух. Если же минимальный и максимальный пороги не указаны, то процессов может быть сколько угодно. Давайте посмотрим, что snmpd нам скажет в ответ на такие приказания. Для этого открываем ветвь .iso.org.dod.internet.private.enterprises.ucdavis.prTable.prEntry.

9


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.