我搜索从mysql查询的结果创建一个zabbix捕获器。我已经将我的网络部署为unix实用程序arpwatch。 Arpwatch记录所有地址IP,网络的mac。我将记录发送到数据库中,以便将他与dhcp保释金进行比较。
我的脚本代码是:
`#/usr/bin/bash`
`DB_HOST='192.168.0.13
DB_USER='user'
DB_PASS='test'
DB='arpwatch' `
`mysql -u "$DB_USER" \ `
`--host="$DB_HOST" \ `
`--password="$DB_PASS" \ `
`--database="$DB" \ `
`--enable-local-infile \ `
`--execute="$req1 $req2" `
`req1=$'LOAD DATA LOCAL INFILE "/var/lib/arpwatch/arp.dat" `
`INTO TABLE arpwatch `
`FIELDS ENCLOSED BY " " `
`LINES TERMINATED BY "\n";' `
`req2=$"select * from arpwatch where arpwatch.adresse_ip not in(select dhcp.adresse_ip from dhcp);" `
if [ "$req2" = "$req1" ]
then
STATUS="OK"
else
STATUS="WRONG ADRESS"
fi
zabbix_sender -k network.status -z 192.168.0.13 -s"device"
我的问题是如何在状态以及何时可能知道错误的地址时触发?
感谢您的帮助
答案 0 :(得分:0)
概念:
...
if [ "$req2" = "$req1" ]
then
STATUS="OK"
else
STATUS=<DIFF $req2 $req1>
fi
zabbix_sender -k network.status -z 192.168.0.13 -s"device" -o $STATUS
=&GT;如果一切正常,脚本将发送OK,否则差异(IP有问题,......)
触发:
{device:network.status.last(0)}#OK
=&GT;触发器将引发事件,如果最后一个值不是'OK' - 将在通知中使用最后一个值(有问题的IP)。
不要忘记:network.status必须是信息类型:text