Я пытаюсь написать модульный тест send_nsca
с помощью nc
но это не удается.
Я хочу начать nc
для прослушивания порта nsca, а затем использовать send_ncsa
для отправки сообщения в этот порт.
В одном терминале я запускаю:
nc -l 5667 -v
В другом:
echo -e "foo.example.com\ttest\t0\t0" | ./send_nsca -H localhost -p 5667 -c send_nsca.cfg
Мой send_nsca.cfg
файл содержит только: encryption_method=0
.
На терминале прослушивания я получаю:
Connection from 10.1.30.23 port 5667 [tcp/*] accepted
Но больше ничего. На send_nsca
сторона я получаю:
Error: Timeout after 10 seconds
Любые идеи?
РЕДАКТИРОВАТЬ:
Я перекомпилировал исходный код и включил вывод DEBUG:
Connected okay...
Error: Timeout after 10 seconds
Cleaned up encryption routines
Из кода я вижу, что мне не хватает пакета инициализации, содержащего IV и временную метку:
#ifdef DEBUG
printf("Connected okay...\n");
#endif
/* read the initialization packet containing the IV and timestamp */
result=read_init_packet(sd);
if(result!=OK){
printf("Error: Could not read init packet from server\n");
close(sd);
do_exit(STATE_CRITICAL);
}
#ifdef DEBUG
printf("Got init packet from server\n");
#endif
Есть ли другой способ протестировать send_nsca без полноценной установки nagios?
Для тестирования send_nsca вам не нужна "полноценная установка nagios" ...
NSCA - это надстройка, которая не является частью самого ядра Nagios. Он упакован как отдельный компонент, например, в Debian / Ubuntu и CentOS (epel или repoforge).
NSCA работает как демон или через inetd / xinetd. Увидеть Документы по настройке NSCA для получения дополнительной информации о том, как его запустить.
Кроме того, есть несколько доступных замен для NSCA; NRDP и NSCA-ng может быть вам интересен для тестирования.