====== Nagioscmd ======
Man kann Nagios auch von der Konsole aus anweisen etwas zu tun.
Die external Commands und die ''nagios.cmd'' Datei machen es möglich.
===== Command absenden =====
Dafür sendet man einfach einen Befehl an die ''nagios.cmd'' Datei und wartet kurz ab.
Die Syntax für einen externen Befehl lautet:
[time] command_id;command_arguments
^ Syntax ^ Beschreibung ^
| [time] | Die Zeit im ''time_t'' Format, gibt den Zeitpunkt an, \\ wann der Befehl an die Datei ''nagios.cmd'' \\ abgegeben wurde (also einfach die aktuelle Zeit). |
| command_id | Das ist der eigentliche Befehle der an Nagios übergeben wird. \\ Er setzt sich aus mehreren Angaben, \\ wie z.B. Host und Service zusammen. |
| command_arguments | Hier werden die Argumente für den Befehl angegeben. |
Im Log, ''nagios.log'', sieht man dann was passiert, wenn der entsprechende Log-Level in der Nagios-Konfigurationsdatei, ''nagios.cfg'' eingestellt ist.
Hier findet man alle möglichen Commands: [[https://www.nagios.org/developerinfo/externalcommands/]]
===== Beispiele =====
Hier ein Einzeiler über den Befehl ''echo'':
**HOST-Comment**
echo "['date +%s'] ADD_HOST_COMMENT;Localhost;1;SMS Versand;Testnachricht um 'date +%Y-%m-%d'" > /usr/local/nagios/var/rw/nagios.cmd
**Service-Check**
echo "['date +%s'] SCHEDULE_SVC_CHECK;Localhost;SMS Versand" > /usr/local/nagios/var/rw/nagios.cmd
Hier ein kleines Script über den Befehl ''printf'':
#!/bin/sh
##
now=`date +%s`
commandfile='/usr/local/nagios/var/rw/nagios.cmd'
# Syntax: SEND_CUSTOM_SVC_NOTIFICATION;;;;;
/usr/bin/printf "[%lu] SEND_CUSTOM_SVC_NOTIFICATION;Localhost;SMS Versand testen;0;Nagiosbenutzer;Test-SMS\n" $now > $commandfile
Oder hier noch mal als Einzeiler:
**Service-Check**
/usr/bin/printf "[%lu] SCHEDULE_SVC_CHECK;HOST;SERVICE;`date +%s`\n" `date +%s` > /usr/local/nagios/var/rw/nagios.cmd
===== CGI anpassen =====
Einige Befehle welche über die Web-GUI ausführbar sind, haben durch die CGI-Scripte vordefinierte Werte.
Diese Werte lassen sich vor dem Kompilieren von Nagios anpassen.
==== scheduled Downtime ====
Der scheduled Downtime Zeitwert welcher die standardmäßige Dauer der Downtime definiert ist z.B. auf 2 Std. gestellt.
Das kann man in der Datei ''/cgi/cmd.c'' anpassen.
Hier muss der Wert aus der Zeile ''t += (unsigned long)7200;'' geändert werden (Wert ist angegeben in Sekunden).
Quelle: [[http://www.monitoring-portal.org/wbb/index.php?page=Thread&threadID=21267]]