Issue
Code backup
This commit is contained in:
@@ -0,0 +1,235 @@
|
||||
#!/bin/bash
|
||||
|
||||
# - VAR
|
||||
|
||||
# - Bash info
|
||||
APPNAME=$(basename $0)
|
||||
NAME="Check Switch HPE OfficeConnect 1920s"
|
||||
AUTHOR="Kalarumeth"
|
||||
VERSION="v0.1"
|
||||
URL="https://github.com/Kalarumeth"
|
||||
|
||||
# - 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
|
||||
|
||||
# - OID
|
||||
|
||||
HPE.OIDS() {
|
||||
#Info
|
||||
OID_sysDescr="1.3.6.1.2.1.1.1.0"
|
||||
OID_sysUptimeIstance="1.3.6.1.2.1.1.3"
|
||||
OID_sysSerial="1.3.6.1.2.1.47.1.1.1.1.11.1"
|
||||
OID_sysMacAddres="1.3.6.1.2.1.67.1.2.1.1.2.0"
|
||||
|
||||
#interface
|
||||
OID_ifName="1.3.6.1.2.1.31.1.1.1.1"
|
||||
OID_ifInErrors="1.3.6.1.2.1.2.2.1.14"
|
||||
OID_ifOutErrors="1.3.6.1.2.1.2.2.1.20"
|
||||
|
||||
#Vlan
|
||||
OID_vlanID="1.3.6.1.2.1.17.7.1.4.2.1.3.0"
|
||||
OID_vlanName="1.3.6.1.2.1.17.7.1.4.3.1.1"
|
||||
OID_vlanEntry="1.3.6.1.2.1.17.7.1.2.1.1.2"
|
||||
}
|
||||
|
||||
# - MAIN CODE
|
||||
|
||||
Script.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
|
||||
}
|
||||
|
||||
Script.SNMP() {
|
||||
snmpwalk -v $SNMPVERSION -r 1 -t 10 -Oe -c $COMMUNITY $HOST_NAME $1
|
||||
}
|
||||
|
||||
Script.SNMP.Hex() {
|
||||
snmpwalk -v $SNMPVERSION -r 1 -t 10 -Oa -c $COMMUNITY $HOST_NAME $1
|
||||
}
|
||||
|
||||
# - Switch HPE OfficeConnect 1920s Health Check
|
||||
|
||||
HPE.Main() {
|
||||
Script.HostAlive
|
||||
|
||||
case $1 in
|
||||
info)
|
||||
HPE.Info
|
||||
exit $STATE ;;
|
||||
if)
|
||||
HPE.Interface
|
||||
exit $STATE ;;
|
||||
vlan)
|
||||
HPE.Vlan
|
||||
exit $STATE ;;
|
||||
*)
|
||||
echo "Unknown check!"
|
||||
Help.HPE
|
||||
exit $STATE_UNK ;;
|
||||
esac
|
||||
}
|
||||
|
||||
HPE.GetData() {
|
||||
HPE.OIDS
|
||||
|
||||
case $1 in
|
||||
info)
|
||||
raw_sysDescr=$(Script.SNMP $OID_sysDescr | cut -d '"' -f 2)
|
||||
IFS=',' read -ra sysDescr <<< $raw_sysDescr;
|
||||
sysUptimeIstance=$(Script.SNMP $OID_sysUptimeIstance | cut -d ')' -f 2 )
|
||||
sysSerial=$(Script.SNMP $OID_sysSerial | cut -d '"' -f 2)
|
||||
sysMacAddres=$(Script.SNMP $OID_sysMacAddres | cut -d '"' -f 2);;
|
||||
interface)
|
||||
raw_ifName=$(Script.SNMP $OID_ifName | cut -d ' ' -f 4)
|
||||
raw_ifInErrors=$(Script.SNMP $OID_ifInErrors | cut -d ' ' -f 4)
|
||||
raw_ifOutErrors=$(Script.SNMP $OID_ifOutErrors | cut -d ' ' -f 4)
|
||||
readarray -t ifName <<< $raw_ifName
|
||||
readarray -t ifInErrors <<< $raw_ifInErrors
|
||||
readarray -t ifOutErrors <<< $raw_ifOutErrors ;;
|
||||
vlan)
|
||||
raw_vlanID=$(Script.SNMP $OID_vlanID | cut -d ' ' -f 4 | sed "s/$//g")
|
||||
raw_vlanName=$(Script.SNMP $OID_vlanName | cut -d '"' -f 2 | sed "s/$//g")
|
||||
raw_vlanEntry=$(Script.SNMP $OID_vlanEntry | cut -d ' ' -f 4 | sed "s/$//g")
|
||||
readarray -t vlanID <<< $raw_vlanID
|
||||
readarray -t vlanName <<< $raw_vlanName
|
||||
readarray -t vlanEntry <<< $raw_vlanEntry ;;
|
||||
esac
|
||||
}
|
||||
|
||||
HPE.Info() {
|
||||
HPE.GetData info
|
||||
|
||||
printf "%s\n\n" "${sysDescr[0]}"
|
||||
printf "%s\t%s\n" "UpTime:" "$sysUptimeIstance"
|
||||
printf "%s\t%s\n" "S/N:" " $sysSerial"
|
||||
printf "%s\t%s\n" "Relase:" "${sysDescr[1]}"
|
||||
printf "%s\t%s\n" "Os:" "${sysDescr[2]}"
|
||||
printf "%s\t%s\n" "Bios:" "${sysDescr[3]}"
|
||||
printf "%s\t%s\n" "Mac:" " $sysMacAddres"
|
||||
}
|
||||
|
||||
HPE.Interface() {
|
||||
HPE.GetData interface
|
||||
ErrorCounter=0
|
||||
|
||||
for ((i=0; i<${#ifName[@]}; i++));
|
||||
do
|
||||
if [[ ${ifInErrors[$i]} != 0 || ${ifOutErrors[$i]} != 0 ]]; then
|
||||
ErrorCounter=$((ErrorCounter + 1))
|
||||
fi
|
||||
done
|
||||
|
||||
for Error in "$ErrorCounter"; do
|
||||
if [[ $Error == 0 ]] ; then
|
||||
printf "%s\t%s\n\n" "OK!" "All interface operating normally."
|
||||
break
|
||||
else
|
||||
printf "%s\n\n" "Warn! $ErrorCounter inteface have error."
|
||||
printf "%s\t%s\t%s\n" "InEr" "OutEr" "If"
|
||||
printf "%s\n" "========================="
|
||||
|
||||
for ((i=0; i<${#ifName[@]}; i++));
|
||||
do
|
||||
if [[ ${ifInErrors[$i]} != 0 || ${ifOutErrors[$i]} != 0 ]] ; then
|
||||
printf "%s\t%s\t%s\n" "${ifInErrors[$i]}" "${ifOutErrors[$i]}" "${ifName[$i]}"
|
||||
fi
|
||||
done
|
||||
STATE=$STATE_WARN
|
||||
break
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
HPE.Vlan() {
|
||||
HPE.GetData vlan
|
||||
|
||||
printf "%s\n\n" "${#vlanID[@]} Exist Vlan"
|
||||
printf "%s\t%s\t%s\n" "ID" "Entry" "Name"
|
||||
printf "%s\n" "============================="
|
||||
|
||||
for ((i=0; i<${#vlanID[@]}; i++))
|
||||
do
|
||||
printf "%s\t%s\t%s\n" "${vlanID[$i]}" "${vlanEntry[$i]}" "${vlanName[$i]}"
|
||||
done
|
||||
}
|
||||
|
||||
# - Help
|
||||
|
||||
Help.Main() {
|
||||
echo $NAME
|
||||
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>"
|
||||
}
|
||||
|
||||
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" "-H" "--help" "Show script help"
|
||||
printf "%s\t%s\t%s\n" "-V" "--version" "Show script version"
|
||||
}
|
||||
|
||||
Help.HPE() {
|
||||
printf "\n%s\n\n" "HPE OfficeConnect 1920s Check Function"
|
||||
printf "%s\t%s\n\n" "Check" "Description"
|
||||
printf "%s\t%s\n" "info" "Print Switch basic information"
|
||||
printf "%s\t%s\n" "if" "Monitoring interface"
|
||||
printf "%s\t%s\n" "vlan" "Monitoring Vlan"
|
||||
}
|
||||
|
||||
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)
|
||||
HPE.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
|
||||
|
||||
HPE.Main
|
||||
Reference in New Issue
Block a user