Zabbix 4 check universalclustercheck with header

Konnte man bisher den Zabbix Client eines Servers von einem anderen Rechner, der in der Konfiguration freigegeben war, mit einem einfachen


devil@hell$ echo universalclustercheck | nc 192.168.1.1 10050

abfragen, um sie die aktuelle Gewichtung anzeigen zu lassen, bekam man als Antwort z.B.


devil@hell$ ZBXD100

zurück, ab Zabbix4 bekommt man mit diesem einfachen Test nix mehr zurück, ein wenig Recherche und die Ursache war schnell gefunden.

Die Lösung, mit Zabbix4 wurde die Unterstützung für das Plaintext Protokoll komplett entfernt, daher muß bei jeder Anfrage ein korrekter Header mitgeschickt werden, wenn eine Ausgabe erwünscht ist 🙂

Ein kleiner Shell Schnipsel, kann einem dieses abnehmen:

----------schnipp----------


devil@hell$ vim /usr/local/bin/check_new_zabbix4
#!/bin/bash
#
# da der Zabbix Client ab Version 4 kein Plaintext Protokoll mehr unterstüzt
# muss nun zwingend beim ausführen von
# echo universalclustercheck | nc 192.168.1.1 10050
# ein Header mitgesendet werden.

DATA=universalclustercheck

if [ „$1“ == „“ ]
then
echo „mit check_new_zabbix4 IP aufrufen“
else
printf -v LENGTH ‚%016x‘ „${#DATA}“
PACK=““
for (( i=14; i>=0; i-=2 )); do PACK=“$PACK\\x${LENGTH:$i:2}“; done
printf „ZBXD\1$PACK%s“ „$DATA“ | nc $1 10050
fi


----------schnapp----------

legt diesen im Pfad an und ein


devil@hell$ chmod +x /usr/local/bin/check_new_zabbix4

sorgt dafür das er ausführbar ist, danach kann er wie folgt aufgerufen werden


devil@hell$ check_new_zabbix4 192.168.1.1

und wir bekommen ein


devil@hell$ ZBXD100

zurück, man kann diesen Check auch für die älteren Zabbix Clients benutzen, da auch die alten Clients eine Header Anfrage nicht verschmähen.