> Еще маленькая проблемка, маков может быть больше чем один и они могут
> меняться.
> Вот и если убрать :
> $found->{2} = 1 if $_ =~ /00d0.b7b0.2db9/ && $_ =~ /FastEthernet0/9/;
> то при любом результате выдает :
> "MAC found on specified port"
> Как это исправить, то я только начинаю учить перл) дык я откуда знаю, как это исправить? Задача то ваша. )
---------
А что тут учить ? тут вроде 5 строк, надо понимать алгоритмику, а язык программирования тут особо знать и не надо. Это я тут с хэшами фишкую, вообще можно простыми переменными обойтись.
Если сильно хочется - то можно мак-адреса либо вшить в текст программы, либо передавать параметром вызова (тогда они в нагиосе будут раздельными сервисами висеть, что имхо предпочительнее). Конфиг нагиоса позволяет определять переменные в хостах/сервисах, а затем использовать их в командах их проверки.
хитрый экзампль:
#Общее описание группы хостов
define host {
use a-host
name b-host
parents gw-c
hostgroups d-hostgroup
_CHKPING -w 350,14% -c 450,25% -p 6
register 0
}
....
#один из хостов. Нужно только три строки. Все проверки будут подвешены как сервисы группы хостов.
#Возможно, вашем случае будет четыре строки - добавится определение значения мак-адреса хоста.
define host {
use b-host
host_name my-special-host
address 1.2.3.4
}
..........
### COMMANDS
define command {
command_name special_chk_ping
command_line $USER1$/check_ping -H $HOSTADDRESS$ $_HOSTCHKPING$
# $_HOSTCHKPING$ - переменная, определенная в хосте
}
Вешаем команду на группу хостов
define service {
use generic-service
normal_check_interval 5
hostgroup_name d-hostgroup
service_description Ping from Monitoring
check_command special_chk_ping
notification_interval 0
}
##############
Документация у нагиоса хорошая, мне нравится :-)
http://nagios.sourceforge.net/docs/nagioscore/3/en/customobj...
А использование переменных - это типа гибкость =) Можно одну и ту же переменную использовать в разных командах проверки, менять в одном месте и всё такое.
В моем случае описанный тремя строчками хост проверяется еще и из разных точек мониторинга.
Подвешивать проверки на группы, задавать параметры проверок через переменные - это ИМХО очень удобно )
Аналогичным вышеописанному с хостами образом можно поступать и с сервисами - вешать проверки на шаблон сервиса, наследовать сервисы от шаблона, мак-адреса вписывать в переменные в описании service. На мой взгляд - это легко и красиво :-)
Вообще это всё по вкусу =) можно конечно и параметрами check_command обходиться =)
-------------
Вообще примеров нагиос-плагинов дофига, на разных ЯП, и на разные вкусы/задачи.
Как в интернете, так и в штатной поставке нагиоса.
Для подобного случая, когда маков прямо дофига, чтобы оптимизировать процесс опроса, я бы посмотрел в сторону нагиос-пассивного опроса, т.е. чтобы был отдельный скрипт (скажем в кроне) опрашивающий необходимые маки с коммутатора за одну телнет-сессию и клал данные куда надо там нагиосу (сам я пассивные сервисы пока не делал).
Как начальный вариант, можно делать одну телнет-сессию и опрашивать наличие всех необходимых маков в одном скрипте, и подвешивать в нагиос это как один сервис. Но это смотря кому что и как. Точного времени неработы/журнала состояния по конкретному маку, естественно, в этом случае не будет.