Validate both numerical and lexical OIDs.

This commit is contained in:
Kristofer Hallin 2022-06-03 06:20:02 +02:00 committed by Olof hagsand
parent 2e529290ea
commit a3d0b74e4b
4 changed files with 121 additions and 39 deletions

View file

@ -254,18 +254,20 @@ if $SNMPCHECK; then
name="$($snmptranslate $oid)"
name2="$($snmptranslate $oid2)"
if [ $oid == $oid2 ]; then
new "Validating numerical OID: $oid2 = $type: $value"
expectpart "$($snmpget $oid)" 0 "$oid2 = $type: $value"
new "Validating textual OID: $name2 = $type: $value"
expectpart "$($snmpgetstr $name)" 0 "$name2 = $type: $value"
if [[ $oid =~ ^([0-9]|\.)+$ ]]; then
get=$snmpget
getnext=$snmpgetnext
else
new "Validating numerical next OID: $oid2 = $type: $value"
expectpart "$($snmpgetnext $oid)" 0 "$oid2 = $type: $value"
get=$snmpgetstr
getnext=$snmpgetnextstr
fi
new "Validating textual next OID: $name2 = $type: $value"
expectpart "$($snmpgetnextstr $name)" 0 "$name2 = $type: $value"
if [ $oid == $oid2 ]; then
new "Validating OID: $oid2 = $type: $value"
expectpart "$($get $oid)" 0 "$oid = $type: $value"
else
new "Validating next OID: $oid2 = $type: $value"
expectpart "$($getnext $oid)" 0 "$oid2 = $type: $value"
fi
}

View file

@ -151,54 +151,101 @@ OID21="${MIB}.2.2.1.3" # netSnmpHostAddress
OID22="${MIB}.2.2.1.4" # netSnmpHostStorage
OID23="${MIB}.2.2.1.5" # netSnmpHostRowStatus
NAME1="NET-SNMP-MIB::netSnmp.200.1.1"
NAME2="NET-SNMP-MIB::netSnmp.200.1.2"
NAME3="NET-SNMP-MIB::netSnmp.200.1.3"
NAME4="NET-SNMP-MIB::netSnmp.200.1.4"
NAME5="NET-SNMP-MIB::netSnmp.200.1.5"
NAME6="NET-SNMP-MIB::netSnmp.200.1.6"
NAME7="NET-SNMP-MIB::netSnmp.200.1.7"
NAME8="NET-SNMP-MIB::netSnmp.200.1.8"
NAME9="NET-SNMP-MIB::netSnmp.200.1.9"
NAME10="NET-SNMP-MIB::netSnmp.200.1.10"
NAME11="NET-SNMP-MIB::netSnmp.200.1.11"
NAME12="NET-SNMP-MIB::netSnmp.200.1.12"
NAME13="NET-SNMP-MIB::netSnmp.200.2.1"
NAME14="NET-SNMP-MIB::netSnmp.200.2.1.1"
NAME15="NET-SNMP-MIB::netSnmp.200.2.1.1.1"
NAME16="NET-SNMP-MIB::netSnmp.200.2.1.1.2"
NAME17="NET-SNMP-MIB::netSnmp.200.2.1.1.3"
NAME18="NET-SNMP-MIB::netSnmp.200.2.2"
NAME19="NET-SNMP-MIB::netSnmp.200.2.2.1.1"
NAME20="NET-SNMP-MIB::netSnmp.200.2.2.1.2"
NAME21="NET-SNMP-MIB::netSnmp.200.2.2.1.3"
NAME22="NET-SNMP-MIB::netSnmp.200.2.2.1.4"
NAME23="NET-SNMP-MIB::netSnmp.200.2.2.1.5"
new "$snmpget"
new "Get netSnmpExampleInteger"
validate_oid $OID1 $OID1 "INTEGER" 2147483647
validate_oid $OID1 $OID2 "INTEGER" -1
validate_oid $NAME1 $NAME1 "INTEGER" 2147483647
validate_oid $NAME1 $NAME2 "INTEGER" -1
new "Get netSnmpExampleSleeper"
validate_oid $OID2 $OID2 "INTEGER" -1
validate_oid $OID2 $OID3 "STRING" "\"This is not default\""
validate_oid $NAME2 $NAME2 "INTEGER" -1
validate_oid $NAME2 $NAME3 "STRING" "\"This is not default\""
new "Get netSnmpExampleString"
validate_oid $OID3 $OID3 "STRING" "\"This is not default\""
validate_oid $OID3 $OID4 "Timeticks" "(12345) 0:02:03.45"
validate_oid $NAME3 $NAME3 "STRING" "\"This is not default\""
validate_oid $NAME3 $NAME4 "Timeticks" "(12345) 0:02:03.45"
new "Get ifTableLastChange"
validate_oid $OID4 $OID4 "Timeticks" "(12345) 0:02:03.45"
validate_oid $OID4 $OID5 "INTEGER" 48
validate_oid $NAME4 $NAME4 "Timeticks" "(12345) 0:02:03.45"
validate_oid $NAME4 $NAME5 "INTEGER" 48
new "Get ifType"
validate_oid $OID5 $OID5 "INTEGER" 48
validate_oid $OID5 $OID6 "Gauge32" 123123123
validate_oid $NAME5 $NAME5 "INTEGER" 48
validate_oid $NAME5 $NAME6 "Gauge32" 123123123
new "Get ifSpeed"
validate_oid $OID6 $OID6 "Gauge32" 123123123
validate_oid $OID6 $OID7 "INTEGER" 3
validate_oid $NAME6 $NAME6 "Gauge32" 123123123
validate_oid $NAME6 $NAME7 "INTEGER" 3
new "Get ifAdminStatus"
validate_oid $OID7 $OID7 "INTEGER" 3
validate_oid $OID7 $OID8 "Counter32" 123456
validate_oid $NAME7 $NAME7 "INTEGER" 3
validate_oid $NAME7 $NAME8 "Counter32" 123456
new "Get ifInOctets"
validate_oid $OID8 $OID8 "Counter32" 123456
validate_oid $OID8 $OID9 "Counter64" 4294967296
validate_oid $NAME8 $NAME8 "Counter32" 123456
validate_oid $NAME8 $NAME9 "Counter64" 4294967296
new "Get ifInHCOctets"
validate_oid $OID9 $OID9 "Counter64" 4294967296
validate_oid $OID9 $OID10 "INTEGER" 1
validate_oid $NAME9 $NAME9 "Counter64" 4294967296
validate_oid $NAME9 $NAME10 "INTEGER" 1
new "Get ifPromiscuousMode"
validate_oid $OID10 $OID10 "INTEGER" 1
validate_oid $OID10 $OID11 "Timeticks" "(1234567890) 142 days, 21:21:18.90"
validate_oid $NAME10 $NAME10 "INTEGER" 1
validate_oid $NAME10 $NAME11 "Timeticks" "(1234567890) 142 days, 21:21:18.90"
new "Get ifCounterDiscontinuityTime"
validate_oid $OID11 $OID11 "Timeticks" "(1234567890) 142 days, 21:21:18.90"
validate_oid $OID11 $OID12 "INTEGER" 1
validate_oid $NAME11 $NAME11 "Timeticks" "(1234567890) 142 days, 21:21:18.90"
validate_oid $NAME11 $NAME12 "INTEGER" 1
new "Get ifStackStatus"
validate_oid $OID12 $OID12 "INTEGER" 1
validate_oid $NAME12 $NAME12 "INTEGER" 1
new "Get bulk OIDs"
expectpart "$($snmpbulkget $OID1)" 0 "$OID2 = INTEGER: -1" "$OID3 = STRING: \"This is not default\"" "$OID4 = Timeticks: (12345) 0:02:03.45" "$OID5 = INTEGER: 48" "$OID6 = Gauge32: 123123123" "$OID7 = INTEGER: 3" "$OID8 = Counter32: 123456" "$OID9 = Counter64: 4294967296" "$OID10 = INTEGER: 1" "$OID11 = Timeticks: (1234567890) 142 days, 21:21:18.90"

View file

@ -137,9 +137,11 @@ OID21="${MIB}.2.2.1.3" # netSnmpHostAddress
OID22="${MIB}.2.2.1.4" # netSnmpHostStorage
OID23="${MIB}.2.2.1.5" # netSnmpHostRowStatus
new "Setting netSnmpExampleInteger"
validate_set $OID1 "INTEGER" 1234
validate_oid $OID1 $OID1 "INTEGER" 1234
new "Setting netSnmpExampleSleeper"
validate_set $OID2 "INTEGER" -1
validate_oid $OID2 $OID2 "INTEGER" -1
@ -149,25 +151,30 @@ expecteof_netconf "$clixon_netconf -qf $cfg" 0 "$DEFAULTHELLO" "<rpc $DEFAULTNS>
new "netconf commit"
expecteof_netconf "$clixon_netconf -qf $cfg" 0 "$DEFAULTHELLO" "<rpc $DEFAULTNS><commit/></rpc>" "" "<rpc-reply $DEFAULTNS><ok/></rpc-reply>"
new "Validate value set from NETCONF"
validate_oid $OID1 $OID1 "INTEGER" 999
new "Setting netSnmpExampleString"
validate_oid $OID3 $OID3 "STRING" "\"So long, and thanks for all the fish!\""
validate_set $OID3 "STRING" "foo bar"
validate_oid $OID3 $OID3 "STRING" "\"foo bar\""
# new "Setting column nsIETFWGChair1"
# validate_set $OID16 "STRING" "asd"
# validate_oid $OID16 $OID16 "STRING" "asd"
# new "Setting column nsIETFWGChair2"
# validate_set $OID17 "STRING" "asd"
# validate_oid $OID17 $OID16 "STRING" "asdasd"
# new "Setting column netSnmpHostName"
# validate_set $OID19 "STRING" "asd"
# validate_oid $OID19 $OID19 "STRING" "asdasd"
# new "Setting netSnmpHostName"
# validate_set $OID20 "STRING" ipv6
# validate_oid $OID20 $OID20 "STRING" "asdasd"
new "Cleaning up"
testexit

View file

@ -124,63 +124,89 @@ new "SNMP tests"
testinit
OID_SYS=".1.3.6.1.2.1.1"
OID_DESCR=".1.3.6.1.2.1.1.1"
OID_UPTIME=".1.3.6.1.2.1.1.3"
OID_CONTACT=".1.3.6.1.2.1.1.4"
OID_LOCATION=".1.3.6.1.2.1.1.6"
OID_SYSNAME=".1.3.6.1.2.1.1.5"
OID_SERVICES=".1.3.6.1.2.1.1.7"
OID_ORTABLE=".1.3.6.1.2.1.1.9"
OID_DESCR="${OID_SYS}.1"
OID_UPTIME="${OID_SYS}.3"
OID_CONTACT="${OID_SYS}.4"
OID_SYSNAME="${OID_SYS}.5"
OID_LOCATION="${OID_SYS}.6"
OID_SERVICES="${OID_SYS}.7"
OID_ORTABLE="${OID_SYS}.9"
OID_ORTABLE1_IDX="${OID_SYS}.9.1.1.1"
OID_ORTABLE2_IDX="${OID_SYS}.9.1.1.2"
OID_ORTABLE1="${OID_SYS}.9.1.3.1"
OID_ORTABLE2="${OID_SYS}.9.1.3.2"
OID_ORTABLE1_IDX=".1.3.6.1.2.1.1.9.1.1.1"
OID_ORTABLE2_IDX=".1.3.6.1.2.1.1.9.1.1.2"
OID_ORTABLE1=".1.3.6.1.2.1.1.9.1.3.1"
OID_ORTABLE2=".1.3.6.1.2.1.1.9.1.3.2"
NAME_DESCR="SNMPv2-MIB::sysDescr"
NAME_UPTIME="SNMPv2-MIB::sysUpTime"
NAME_CONTACT="SNMPv2-MIB::sysContact"
NAME_SYSNAME="SNMPv2-MIB::sysName"
NAME_LOCATION="SNMPv2-MIB::sysLocation"
NAME_SERVICES="SNMPv2-MIB::sysServices"
NAME_ORTABLE="SNMPv2-MIB::sysORTable"
NAME_ORTABLE1_IDX="SNMPv2-MIB::sysORIndex.1"
NAME_ORTABLE2_IDX="SNMPv2-MIB::sysORIndex.2"
NAME_ORTABLE1="SNMPv2-MIB::sysORDescr.1"
NAME_ORTABLE2="SNMPv2-MIB::sysORDescr.2"
new "Get description, $OID_DESCR"
expectpart "$($snmpget $OID_DESCR)" 0 "$OID_DESCR = STRING: System description"
validate_oid $OID_DESCR $OID_DESCR "STRING" "System description"
validate_oid $NAME_DESCR $NAME_DESCR "STRING" "System description"
new "Get next $OID_DESCR"
expectpart "$($snmpgetnext $OID_DESCR)" 0 "$OID_UPTIME = Timeticks: (11223344) 1 day, 7:10:33.44"
validate_oid $OID_DESCR $OID_UPTIME "Timeticks" "(11223344) 1 day, 7:10:33.44"
validate_oid $NAME_DESCR $NAME_UPTIME "Timeticks" "(11223344) 1 day, 7:10:33.44"
new "Get contact, $OID_CONTACT"
expectpart "$($snmpget $OID_CONTACT)" 0 "$OID_CONTACT = STRING: clixon@clicon.com"
validate_oid $OID_CONTACT $OID_CONTACT "STRING" "clixon@clicon.com"
validate_oid $NAME_CONTACT $NAME_CONTACT "STRING" "clixon@clicon.com"
new "Get next OID after contact $OID_CONTACT"
expectpart "$($snmpgetnext $OID_CONTACT)" 0 "$OID_SYSNAME = STRING: Test"
validate_oid $OID_CONTACT $OID_SYSNAME "STRING" "Test"
validate_oid $NAME_CONTACT $NAME_SYSNAME "STRING" "Test"
new "Get sysName $OID_SYSNAME"
expectpart "$($snmpget $OID_SYSNAME)" 0 "$OID_SYSNAME = STRING: Test"
validate_oid $OID_SYSNAME $OID_SYSNAME "STRING" "Test"
validate_oid $NAME_SYSNAME $NAME_SYSNAME "STRING" "Test"
new "Get next OID after sysName $OID_SYSNAME"
expectpart "$($snmpgetnext $OID_SYSNAME)" 0 "$OID_LOCATION = STRING: Clixon HQ"
validate_oid $OID_SYSNAME $OID_LOCATION "STRING" "Clixon HQ"
validate_oid $NAME_SYSNAME $NAME_LOCATION "STRING" "Clixon HQ"
new "Get sysLocation $OID_LOCATION"
expectpart "$($snmpget $OID_LOCATION)" 0 "$OID_LOCATION = STRING: Clixon HQ"
validate_oid $OID_LOCATION $OID_LOCATION "STRING" "Clixon HQ"
validate_oid $NAME_LOCATION $NAME_LOCATION "STRING" "Clixon HQ"
new "Get next OID after sysLocation $OID_LOCATION"
expectpart "$($snmpgetnext $OID_LOCATION)" 0 "$OID_SERVICES = INTEGER: 72"
validate_oid $OID_LOCATION $OID_SERVICES "INTEGER" 72
validate_oid $NAME_LOCATION $NAME_SERVICES "INTEGER" 72
new "Get sysServices $OID_SERVICES"
expectpart "$($snmpget $OID_SERVICES)" 0 "$OID_SERVICES = INTEGER: 72"
validate_oid $OID_SERVICES $OID_SERVICES "INTEGER" "72"
validate_oid $NAME_SERVICES $NAME_SERVICES "INTEGER" "72"
new "Get next OID after sysServices $OID_SERVICES"
expectpart "$($snmpgetnext $OID_SERVICES)" 0 "$OID_ORTABLE1_IDX = INTEGER: 1"
validate_oid $OID_SERVICES $OID_ORTABLE1_IDX "INTEGER" 1
validate_oid $NAME_SERVICES $NAME_ORTABLE1_IDX "INTEGER" 1
new "Get first index of OR table $OID_ORTABLE1_IDX"
expectpart "$($snmpget $OID_ORTABLE1_IDX)" 0 "$OID_ORTABLE1_IDX = INTEGER: 1"
validate_oid $OID_ORTABLE1_IDX $OID_ORTABLE1_IDX "INTEGER" 1
validate_oid $NAME_ORTABLE1_IDX $NAME_ORTABLE1_IDX "INTEGER" 1
new "Get next OID after index $OID_ORTABLE1_IDX"
expectpart "$($snmpgetnext $OID_ORTABLE1_IDX)" 0 "$OID_ORTABLE2_IDX = INTEGER: 2"
validate_oid $OID_ORTABLE1_IDX $OID_ORTABLE2_IDX "INTEGER" 2
validate_oid $NAME_ORTABLE1_IDX $NAME_ORTABLE2_IDX "INTEGER" 2
new "Get second index $OID_ORTABLE2_IDX"
expectpart "$($snmpget $OID_ORTABLE2_IDX)" 0 "$OID_ORTABLE2_IDX = INTEGER: 2"
validate_oid $OID_ORTABLE2_IDX $OID_ORTABLE2_IDX "INTEGER" 2
validate_oid $NAME_ORTABLE2_IDX $NAME_ORTABLE2_IDX "INTEGER" 2
new "Get sysORTable, entry 1 $OID_ORTABLE1"
expectpart "$($snmpget $OID_ORTABLE1)" 0 "STRING: Entry 1 description"
validate_oid $OID_ORTABLE1 $OID_ORTABLE1 "STRING" "Entry 1 description"
validate_oid $NAME_ORTABLE1 $NAME_ORTABLE1 "STRING" "Entry 1 description"
new "Get sysORTable, entry 2 $OID_ORTABLE2"
expectpart "$($snmpget $OID_ORTABLE2)" 0 "STRING: Entry 2 description"
validate_oid $OID_ORTABLE2 $OID_ORTABLE2 "STRING" "Entry 2 description"
validate_oid $NAME_ORTABLE2 $NAME_ORTABLE2 "STRING" "Entry 2 description"
new "Get table sysORTable $OID_ORTABLE"
expectpart "$($snmptable $OID_ORTABLE)" 0 ".*Entry 1 description.*" "IP-MIB::ip" "1:7:10:33.44"