Issue
Code backup
This commit is contained in:
@@ -0,0 +1,214 @@
|
||||
#!/bin/bash
|
||||
|
||||
# - VAR
|
||||
|
||||
# - Bash info
|
||||
APPNAME=$(basename $0)
|
||||
NAME="Check ESXi vCenter"
|
||||
AUTHOR="Kalarumeth"
|
||||
VERSION="v1.0"
|
||||
URL="https://github.com/Kalarumeth/ESXi-Monitoring"
|
||||
|
||||
# - Default settings for connection
|
||||
COMMUNITY="public"
|
||||
HOST_NAME="localhost"
|
||||
SNMPVERSION="2c"
|
||||
|
||||
# - State Variables
|
||||
STATE_OK=0
|
||||
STATE_WARN=1
|
||||
STATE_CRIT=2
|
||||
STATE_UNK=3
|
||||
STATE=$STATE_OK
|
||||
|
||||
eWarning=0
|
||||
eCritical=0
|
||||
eUnknown=0
|
||||
|
||||
# - OID
|
||||
|
||||
ESXi.OIDS() {
|
||||
OID_osName=".1.3.6.1.2.1.47.1.2.1.1.2.1"
|
||||
OID_fwRev=".1.3.6.1.2.1.47.1.1.1.1.9.1"
|
||||
OID_serviceTag=".1.3.6.1.2.1.47.1.1.1.1.11.1"
|
||||
OID_sysManufacturer=".1.3.6.1.2.1.47.1.1.1.1.12.1"
|
||||
OID_sysModel=".1.3.6.1.2.1.47.1.1.1.1.13.1"
|
||||
OID_prodName=".1.3.6.1.4.1.6876.1.1.0"
|
||||
OID_prodVersion=".1.3.6.1.4.1.6876.1.2.0"
|
||||
OID_prodBuild=".1.3.6.1.4.1.6876.1.4.0"
|
||||
OID_prodUpdate=".1.3.6.1.4.1.6876.1.5.0"
|
||||
OID_prodPatch=".1.3.6.1.4.1.6876.1.6.0"
|
||||
OID_vmName=".1.3.6.1.4.1.6876.2.1.1.2"
|
||||
}
|
||||
|
||||
# - MAIN CODE
|
||||
|
||||
Source.HostAlive() {
|
||||
for server in $HOST_NAME; do
|
||||
ping -c1 -W1 -q $server &>/dev/null
|
||||
if [[ $? != 0 ]] ; then
|
||||
printf "%s\n" "$server is unreachable"
|
||||
exit $STATE_UNK
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
Source.SNMP() {
|
||||
snmpwalk -v $SNMPVERSION -r 1 -t 10 -Oe -c $COMMUNITY $HOST_NAME $1
|
||||
}
|
||||
|
||||
Source.vSpheredb.Host() {
|
||||
for host in $HOST_NAME; do
|
||||
icingacli vspheredb check host --name $host
|
||||
exit $?
|
||||
done
|
||||
}
|
||||
|
||||
Source.vSpheredb.Vm() {
|
||||
for vm in $1; do
|
||||
icingacli vspheredb check vm --name $vm
|
||||
Source.e
|
||||
done
|
||||
}
|
||||
|
||||
Source.e() {
|
||||
case $? in
|
||||
1) eWarning=$(($eWarning + 1)) ;;
|
||||
2) eCritical=$(($eCritical + 1)) ;;
|
||||
3) eUnknown=$(($eUnknown + 1)) ;;
|
||||
esac
|
||||
}
|
||||
|
||||
# - ESXi vCenter Health Check
|
||||
|
||||
ESXi.Main() {
|
||||
Source.HostAlive
|
||||
|
||||
case $1 in
|
||||
host)
|
||||
Source.vSpheredb.Host
|
||||
exit $? ;;
|
||||
info)
|
||||
ESXi.Info
|
||||
exit $STATE ;;
|
||||
vm)
|
||||
ESXi.VmList
|
||||
exit $? ;;
|
||||
*)
|
||||
echo "Unknown check!"
|
||||
Help.Function
|
||||
exit $STATE_UNK ;;
|
||||
esac
|
||||
}
|
||||
|
||||
ESXi.GetData() {
|
||||
ESXi.OIDS
|
||||
|
||||
case $1 in
|
||||
info) osName=$(Source.SNMP $OID_osName | cut -d '"' -f 2)
|
||||
fwRev=$(Source.SNMP $OID_fwRev | cut -d '"' -f 2)
|
||||
serviceTag=$(Source.SNMP $OID_serviceTag | cut -d '"' -f 2)
|
||||
sysManufacturer=$(Source.SNMP $OID_sysManufacturer | cut -d '"' -f 2)
|
||||
sysModel=$(Source.SNMP $OID_sysModel | cut -d '"' -f 2)
|
||||
prodName=$(Source.SNMP $OID_prodName | cut -d '"' -f 2)
|
||||
prodVersion=$(Source.SNMP $OID_prodVersion | cut -d '"' -f 2)
|
||||
prodBuild=$(Source.SNMP $OID_prodBuild | cut -d '"' -f 2)
|
||||
prodUpdate=$(Source.SNMP $OID_prodUpdate | cut -d '"' -f 2)
|
||||
prodPatch=$(Source.SNMP $OID_prodPatch | cut -d '"' -f 2) ;;
|
||||
vm) vmList=($(Source.SNMP $OID_vmName | cut -d '"' -f 2)) ;;
|
||||
esac
|
||||
}
|
||||
|
||||
ESXi.Info() {
|
||||
ESXi.GetData info
|
||||
|
||||
printf "%s\n" "$osName Rev. $fwRev" "$sysManufacturer" "Model: $sysModel" "Service Tag: $serviceTag" "$prodName $prodVersion" "Build: $prodBuild" "Update: $prodUpdate" "Patch: $prodPatch"
|
||||
}
|
||||
|
||||
ESXi.VmList() {
|
||||
ESXi.GetData vm
|
||||
|
||||
if [[ $? != 0 ]] ; then
|
||||
printf "%s\n" "$server is unreachable"
|
||||
exit $STATE_UNK
|
||||
else
|
||||
for((i=0; i<${#vmList[@]}; i++))
|
||||
do
|
||||
printf "%s\n" "$(($i+1)) - ${vmList[$i]}"
|
||||
Source.vSpheredb.Vm ${vmList[$i]}
|
||||
printf "\n"
|
||||
done
|
||||
|
||||
if [[ $eWarning != 0 ]] && [[ $eCritical == 0 ]] ; then
|
||||
exit $STATE_WARN
|
||||
elif [[ $eCritical != 0 ]] && [[ $eUnknown != 0 ]] ; then
|
||||
exit $STATE_CRIT
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# - Help
|
||||
|
||||
Help.Main() {
|
||||
echo "Check ESXi Status"
|
||||
echo ''
|
||||
Help.Usage
|
||||
echo ''
|
||||
Help.Option
|
||||
echo ''
|
||||
Help.Info
|
||||
echo ''
|
||||
exit $STATE_UNK
|
||||
}
|
||||
|
||||
Help.Usage() {
|
||||
printf "%s\n" "Method to compose the execution string"
|
||||
printf "%s\n" "./$APPNAME -c <SNMP community> -h <host> -t [host/info/vm]"
|
||||
}
|
||||
|
||||
Help.Option() {
|
||||
printf "%s\n" "OPTIONS:"
|
||||
printf "%s\t%s\t%s\n\t\t\t%s\n" "-c" "--community" "SNMP v2 community string with Read access." " Default is $COMMUNITY."
|
||||
printf "%s\t%s\t\t%s\n\t\t\t%s\n" "-h" "--host" "Host name or IP address to check." " Default is $HOST_NAME."
|
||||
printf "%s\t%s\t\t%s\n" "-t" "--type" "Argument for check function"
|
||||
printf "%s\t%s\t\t%s\n" "-H" "--help" "Show script help"
|
||||
printf "%s\t%s\t%s\n" "-V" "--version" "Show script version"
|
||||
}
|
||||
|
||||
Help.Function() {
|
||||
printf "\n%s\n\n" "ESXi vCenter Check Function"
|
||||
printf "%s\t%s\n\n" "Check" "Description"
|
||||
printf "%s\t%s\n" "host" "Get Host check from vsphere plugin."
|
||||
printf "%s\t%s\n" "info" "Get Information from snmpwalk."
|
||||
printf "%s\t%s\n" "vm" "Get Virtual Machine from vsphere plugin."
|
||||
}
|
||||
|
||||
Help.Info() {
|
||||
printf "%s\t%s\t%s\n" "INFO:" "$NAME" "$VERSION" "" "$AUTHOR" "$URL"
|
||||
}
|
||||
|
||||
# - COMMAND LINE ENCODER
|
||||
|
||||
while test -n "$1"; do
|
||||
case "$1" in
|
||||
--host | -h)
|
||||
HOST_NAME=$2
|
||||
shift ;;
|
||||
--comunity | -c)
|
||||
COMMUNITY=$2
|
||||
shift ;;
|
||||
--type | -t)
|
||||
ESXi.Main $2
|
||||
shift ;;
|
||||
--help | -H)
|
||||
Help.Main ;;
|
||||
--version | -V)
|
||||
Help.Info
|
||||
exit $STATE ;;
|
||||
*)
|
||||
echo "Unknown argument: $1"
|
||||
print_help
|
||||
exit $STATE_UNK ;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
Reference in New Issue
Block a user