File: //lib64/nagios/plugins/check_a2_dmi.sh.all
#!/bin/bash
# DMI - OS information collector check_mk script
#
HOSTNAME=$(hostname)
BOARD=$(dmidecode 2>/dev/null | grep "Product Name" | tail -n1 | awk '{print $3}')
OS_VERSION=$(cat /etc/redhat-release)
# check if server is core or managed using minion file
if [ ! -f /etc/salt/minion ] || grep -q "10.10.10.14" /etc/salt/minion; then
SERVER_TYPE="Core"
else
SERVER_TYPE="Managed"
fi
#Don't do anything on Xen or KVM
if [ -e /sys/hypervisor/uuid ]; then
UUID=$(cat /sys/hypervisor/uuid)
if [ "${UUID}" != "00000000-0000-0000-0000-000000000000" ]; then
#Xen DomU do nothing
echo "A2Inventory - Host:${HOSTNAME} OS:${OS_VERSION} Platform:DomU ${BOARD} Type:${SERVER_TYPE}"
exit 0
fi
elif [ -e /sys/kernel/debug/kvm-guest ] || [[ $(grep KVM /var/log/dmesg 2>/dev/null) == *"KVM"* ]]; then
#KVM box do nothing
echo "A2Inventory - Host:${HOSTNAME} OS:${OS_VERSION} Platform:KVM ${BOARD} Type:${SERVER_TYPE}"
exit 0
fi
#Load IPMI module which probably isn't loaded
if ! grep -q ipmi_si /proc/kallsyms 2>/dev/null; then
modprobe -q ipmi_si >/dev/null 2>&1
if [[ $? -ne 0 ]]; then
modprobe -q ipmi_devintf >/dev/null 2>&1
if [[ $? -ne 0 ]]; then
#Can't load any of the IPMI stuff, do nothing
echo "A2Inventory - Host:${HOSTNAME} OS:${OS_VERSION} Non-IPMI ${BOARD} Type:${SERVER_TYPE}"
exit 0
fi
else
#This modules takes a bit to initialize, do nothing until next round
echo "A2Inventory - Host:${HOSTNAME} OS:${OS_VERSION} IPMIInit ${BOARD} Type:${SERVER_TYPE}"
exit 0
fi
elif ! grep -q ipmi_devintf /proc/kallsyms 2>/dev/null; then
modprobe -q ipmi_devintf >/dev/null 2>&1
if [[ $? -ne 0 ]]; then
#Can't load any of the IPMI stuff, do nothing
echo "A2Inventory - Host:${HOSTNAME} OS:${OS_VERSION} Non-IPMI ${BOARD} Type:${SERVER_TYPE}"
exit 0
fi
fi
if [[ -e /opt/bin/ipmicfg ]]; then
IPMI=$(/opt/bin/ipmicfg -m)
if [[ "${IPMI}" == *"kcs"* ]]; then
echo "A2Inventory - ${HOSTNAME} Non-IPMI ${BOARD} Type:${SERVER_TYPE}"
exit 0
else
IPMIIP=$(echo "${IPMI}" | grep IP | cut -d= -f2)
FRU=$(/opt/bin/ipmicfg -fru PAT)
if [ "${FRU}" != "A2:${HOSTNAME}:${BOARD}" ]; then
/opt/bin/ipmicfg -fru PAT "A2:${HOSTNAME}:${BOARD}" >/dev/null
fi
fi
fi
echo "A2Inventory - Host:${HOSTNAME} OS:${OS_VERSION} ${IPMIIP} ${BOARD} Type:${SERVER_TYPE}"
exit 0