ZABBIX API: Comparando IP com “Visible Name”

Em ambientes muito grandes… digo DataCenters é comum usarmos o nome no DNS para identificar algum host na rede e com o Zabbix não seria diferente, com tantos clientes a chance de ter redes iguais e nomes idênticos para servidores não é pequena.

Pensando nisso criei um simples script com a API, onde você passa o nome do host e ele te fala se o IP correspondente a ele é mesmo que esta configurado no “Visible Name”

Segue abaixo o código:

#!/bin/sh
#
# Luiz Sales - luiz@lsales.biz
# redhate.me - lsales.biz
#
# Compare IP com Host
# $1 - Hostname

# VARIABLES

#HOSTNAME=''
SERVER='locahost'
IP=''
API='http://localhost/api_jsonrpc.php'

# CONSTANT VARIABLES

ZABBIX_USER="user.api"
ZABBIX_PASS="pass.api"
HOST=$1

authenticate()
{
wget -O- -o /dev/null $API --header 'Content-Type: application/json-rpc' --post-data "{
\"jsonrpc\": \"2.0\",
\"method\": \"user.login\",
\"params\": {
\"user\": \"$ZABBIX_USER\",
\"password\": \"$ZABBIX_PASS\"},
\"id\": 0}" | cut -d'"' -f8
}
AUTH_TOKEN=$(authenticate)

get_host_ip() {

wget -O- -o /dev/null $API --header 'Content-Type: application/json-rpc' --post-data "{
\"jsonrpc\": \"2.0\",
\"method\": \"host.get\",
\"params\": {
\"output\": \"hostid\",
\"selectInterfaces\" : \"extend\",
\"filter\": {
\"host\" : [ \"$HOST\" ]
}
},
\"auth\": \"$AUTH_TOKEN\",
\"id\": 0}" | awk -v RS=',"' -F: '/^ip/ {print $2}' | sed 's/"//g'

}
get_host_name() {

wget -O- -o /dev/null $API --header 'Content-Type: application/json-rpc' --post-data "{
\"jsonrpc\": \"2.0\",
\"method\": \"host.get\",
\"params\": {
\"output\": \"extend\",
\"filter\": {
\"host\" : [ \"$HOST\" ]
}
},
\"auth\": \"$AUTH_TOKEN\",
\"id\": 0}" | awk -v RS=',"' -F: '/^name/ {print $2}' | sed 's/"//g'

}
iphost=$(get_host_ip)
namehost=$(get_host_name | sed 's/ //g')
dnsip=`nslookup $iphost | grep name | awk -F "=" '{print $2}' | sed 's/ //g'`
if [ "$namehost" != "$dnsip" ]; then
echo "DNS do IP eh diferente do nome"
else
echo "OK. Host OK"
fi

Bem… espero que seja útil ;-))

abs e vida longa ao Zabbix.

Leave a Reply