#!/bin/bash # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= # # Author: Chris Regenye (SysInfrastructure) # Date: 4/12/2006 # Info: Script to convert the syntax of zabbix items in the database from early # beta1.1/alpha1.1/1.0 builds to make them compatable with post 1.1beta5 # # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= outfile="newitems" tempfile="itemextractions" databasename="zabbix" databasehost="localhost" databaseuser="youruser" databasepassword="yourpassword" # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= # Update database with item information from file # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= function db_update { while read itemid status key do echo "update items set status = \"$status\", key_=\"$key\" where itemid = \"$itemid\"" | mysql -u $databaseuser -h $databasehost --password="$databasepassword" $databasename done < $1 } # Get item info from db for host # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= function db_fetch { host=$1 hosti=$(echo "select hostid from hosts where host= \"$host\"" | mysql -u $databaseuser -h $databasehost --password="$databasepassword" $databasename) hostid=$(echo $hosti| awk '{print $2}') backupfile="$host.$hostid.backup" echo "select i.itemid, i.status, i.key_ from items i, hosts h where h.host = \"$host\" and i.hostid = h.hostid" | mysql -u $databaseuser -h $databasehost --password="$databasepassword" $databasename > $tempfile } # restore items from backup file # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= function restore_files { db_fetch $2 echo " Restore Mode: Host = \"$host\"" [ ! "$hostid" ] && echo && echo " Host parameter is absent or does not exist in database" && error_out [ ! -f $backupfile ] && echo && echo " Backup file for not found !!!" && error_out db_update $backupfile } # Generate output and backup files # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= function generate_files { db_fetch $1 echo " Update Mode: Host = \"$host\"" [ ! "$hostid" ] && echo && echo " Host parameter is absent or does not exist in database" && error_out cp /dev/null $outfile cp /dev/null $backupfile while read itemid status key do keyitem=$(echo $key | awk -F"\\\[|\\\]" '{print $1}') keyvalue=$(echo $key | awk -F"\\\[|\\\]" '{print $2}') [ $itemid = "itemid" ] && continue # bail on header line output=$key # default, don't change key [ $keyitem = "diskfree" ] && output="vfs.fs.size[$keyvalue, free]" [ $keyitem = "disktotal" ] && output="vfs.fs.size[$keyvalue, total]" [ $keyitem = "diskused" ] && output="vfs.fs.size[$keyvalue, used]" [ $keyitem = "memory" ] && output="vm.memory.size[$keyvalue]" [ $keyitem = "inodefree" ] && output="vfs.fs.inode[$keyvalue, free]" [ $keyitem = "inodetotal" ] && output="vfs.fs.inode[$keyvalue, total]" [ $keyitem = "filesize" ] && output="vfs.file.size[$keyvalue]" [ $keyitem = "cksum" ] && output="vfs.file.cksum[$keyvalue]" [ $keyitem = "swap" ] && [ $keyvalue = "total" ] && output="system.swap.size[,$keyvalue]" [ $keyitem = "swap" ] && [ $keyvalue = "free" ] && output="system.swap.size[,$keyvalue]" [ $keyitem = "swap" ] && [ $keyvalue = "in" ] && output="system.swap.$keyvalue" [ $keyitem = "swap" ] && [ $keyvalue = "out" ] && output="system.swap.$keyvalue" [ $keyitem = "proc_cnt" ] && output="proc.num[$keyvalue]" [ $keyitem = "check_service_perf" ] && output="net.tcp.service.perf[$keyvalue]" [ $keyitem = "check_service" ] && output="net.tcp.service[$keyvalue]" [ $keyitem = "check_port" ] && output="net.tcp.port[$keyvalue]" [ $keyitem = "netloadin1" ] && output="net.if.in[$keyvalue]" [ $keyitem = "netloadout1" ] && output="net.if.out[$keyvalue]" [ $keyitem = "kern" ] && output="kernel.$keyvalue" [ $keyitem = "version" ] && output="agent.$keyitem" [ $keyitem = "ping" ] && output="agent.$keyitem" [ $keyitem = "system" ] && output="$keyitem.$keyvalue" [ $keyitem = "system" ] && [ $keyvalue = "users" ] && output="system.users.num" [ $keyitem = "system" ] && [ $keyvalue = "switches" ] && output="system.cpu.switches" [ $keyitem = "system" ] && [ $keyvalue = "proccount" ] && output="proc.num" [ $keyitem = "system" ] && [ $keyvalue = "procrunning" ] && output="proc.num[,,running]" [ $keyitem = "system" ] && [ $keyvalue = "procload" ] && output="system.cpu.load[,avg1]" [ $keyitem = "system" ] && [ $keyvalue = "procload5" ] && output="system.cpu.load[,avg5]" [ $keyitem = "system" ] && [ $keyvalue = "procload15" ] && output="system.cpu.load[,avg15]" echo $itemid" "$status" "$output >> $outfile echo $itemid" "$status" "$key >> $backupfile done < $tempfile db_update $outfile } # Error encountered, describe syntax # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= function error_out { echo echo " Usage: $0 {HOST} | {restore HOST}" echo " Where HOST is the hostname as defined in zabbix." [ -f $tempfile" ] && rm $tempfile [ -f $outfile" ] && rm $outfile echo; echo "=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= "; echo; echo; echo exit } # Main # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= echo; echo; echo; echo "=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= "; echo [ $1 = "restore" ] && restore_files $1 $2 || generate_files $1 [ -f $tempfile" ] && rm $tempfile [ -f $outfile" ] && rm $outfile echo; echo "=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= "; echo; echo; echo''