snmp OID not increasing - snmp

I try to create a custom SNMP oid (and script).
I add the following line to snmpd.conf (and restart service) :
pass .1.3.6.1.3.2 /bin/myscript.sh
.
cat myscript.sh
#!/bin/sh
echo .1.3.6.1.3.2
echo gauge
exec 100
.
snmpwalk -c mycommunity -v2c 10.2.1.4 .1.3.6.1.3.2
SNMPv2-SMI::experimental.2 = Gauge32: 100
Error: OID not increasing: SNMPv2-SMI::experimental.2
>= SNMPv2-SMI::experimental.2
Is snmpwalk expecting anything at the end of the query ? snmpget work with no problem!

By default snmpwalk expect the value to be increasing. To get around it try:
snmpwalk -Cc -c mycommunity -v2c 10.2.1.4 .1.3.6.1.3.2
The Cc option does this:
"do not check returned OIDs are increasing"
Often the walk can be completed with oid:s out of order using this.

snmpwalk expects increasing replies :
SNMPv2-SMI::experimental.2 = Gauge32: 100
SNMPv2-SMI::experimental.3 = Gauge32: 1125
SNMPv2-SMI::other.1 = Gauge32: 10
END
It appears that the snmp agent replies two identical values :
SNMPv2-SMI::experimental.2 = Gauge32: 100
SNMPv2-SMI::experimental.2 = Gauge32: 100
So it fails (unexpected behaviour).

Related

How can I get the members of Bundle-Ether using snmp?

I want using SNMP to get members of Bundle-Ether, but I can not find the suitable Mib for Bundle-Ether
Have a look at ifStackStatus entry in IF-MIB::ifStackTable . If you know ifIndex of Bundle-Ether, for example 173, you can get lower-layer ifIndexes:
$ snmpwalk -v2c -c public 10.77.136.6 ifName.173
IF-MIB::ifName.173 = STRING: Bundle-Ether5
$ snmpwalk -v2c -c public 10.77.136.6 ifStackStatus.173
IF-MIB::ifStackStatus.173.72 = INTEGER: notInService(2)
IF-MIB::ifStackStatus.173.98 = INTEGER: active(1)
$ snmpget -v2c -c public 10.77.136.6 ifName.72 ifName.98 ifOperStatus.72 ifOperStatus.98
IF-MIB::ifName.72 = STRING: TenGigE0/1/0/0
IF-MIB::ifName.98 = STRING: TenGigE0/1/0/27
IF-MIB::ifOperStatus.72 = INTEGER: down(2)
IF-MIB::ifOperStatus.98 = INTEGER: up(1)

net-snmp unable to translate numeric OID values to textual MIB name

When I run any commands such as:
# snmptranslate .1.3.6.1.4.1.28318.1.1.3
SNMPv2-SMI::enterprises.28318.1.1.3
# snmpwalk 58.196.58.149 1.3.6.1.4.1.28318.1.1.3
SNMPv2-SMI::enterprises.28318.1.1.3.1.0 = STRING: "89-14-a8-52-a4-46"
SNMPv2-SMI::enterprises.28318.1.1.3.2.0 = STRING: "058.196.58.149/255.255.255.252"
SNMPv2-SMI::enterprises.28318.1.1.3.3.0 = STRING: "058.196.58.149"
SNMPv2-SMI::enterprises.28318.1.1.3.6.0 = STRING: "137.010.060.016"
SNMPv2-SMI::enterprises.28318.1.1.3.7.0 = STRING: "137.010.060.017"
SNMPv2-SMI::enterprises.28318.1.1.3.8.0 = INTEGER: 0
SNMPv2-SMI::enterprises.28318.1.1.3.9.0 = INTEGER: 0
SNMPv2-SMI::enterprises.28318.1.1.3.10.0 = STRING: "reserved"
I would like net-snmp to translate .1.3.6.1.4.1.28318.1.1.3 to the textual MIB formats. I'm not sure how to debug this.
I have this in my /etc/snmp/snmp.conf:
# cat /etc/snmp/snmp.conf
mibdirs /usr/share/snmp/mibs
defVersion 2c
defCommunity public
Where all my MIBs are in /usr/share/snmp/mibs. I know that 1.3.6.1.4.1.28318.1.1.3.0 corresponds to a textual MIB name of mac representing the mac address.
Any idea how to debug what has gone wrong and fix the problem?
The issue is that net-snmp doesn't load MIBs even if they're specified in the MIB directory.
So by adding mibs to the /etc/snmp/snmp.conf file fixed it:
# cat /etc/snmp/snmp.conf
mibdirs /usr/share/snmp/mibs
mibs +MYMIB
defVersion 2c
defCommunity public
The OID is translated properly. This can also be debugged by doing a:
$ snmptranslate -m +MYMIB -IR -On hello
MYMIB::hello = STRING: "WORLD"
Which will either output correctly above or show an issue. Note the -m +MYMIB doesn't have to be there if in the /etc/snmp/snmp.conf file.

No Such Instance currently exists at this OID snmpset

I am trying to set some OID but seems that it gives below error "No Such Instance currently exists at this OID" which should not be the case as i am able to get/walk same OID. so its present.
root#m-snm:~# snmpwalk -v 2c -c public 10.2.4.19 .1.3.6.1.2.1.2.2.1.7.3
iso.3.6.1.x.x.x.x.x.7.3 = INTEGER: 1
root#m-snm:~# snmpset -v 2c -c public 10.2.4.19 .1.3.6.1.2.1.2.2.1.7.3 i 2
iso.3.6.1.x.x.x.x.x.7.3 = **No Such Instance currently exists at this OID**
root#m-snm:~# snmpget -v 2c -c public 10.2.4.19 .1.3.6.1.2.1.2.2.1.7.3
iso.3.6.1.x.x.x.x.x.7.3 = INTEGER: 1
Is it the permission issue ? Or i am not allowed to write ? or the field itself is not writable ? how can check what field are r/w and what are readonly

Save Bash script output to text file with conditions

I am using this script to check a list of ips I own to see if they are on the spam block list.
auto.sh:
while read ip ; do
./blacklist.sh $ip
done < block.txt
blacklist.sh is the above linked script.
block.txt lists each of my ips one line at a time (I have several /22).
A typical output of a blocked ip scan looks like this:
Warning: PTR lookup failed
b.barracudacentral.org : 127.0.0.2
bb.barracudacentral.org : 127.0.0.2
black.junkemailfilter.com : 127.0.0.2
cbl.abuseat.org : 127.0.0.2
cidr.bl.mcafee.com : 127.0.0.4
dnsbl.justspam.org : 127.0.0.2
hostkarma.junkemailfilter.com : 127.0.0.2
----------------------------------------------------------
Results for <my ip>
Tested: 117
Passed: 110
Invalid: 0
Blacklisted: 7
----------------------------------------------------------
what I want to do is have the script spit out output to a file when the text above doesn't say "Blacklisted: 0".
I am not sure how to approach this, will this work?
sudo ./auto.sh "conditions where Blacklisted: is > 0" >> 12.txt
Thanks for any help
Put the output in a temporary file and
then check its content:
./auto.sh > 12_temp.txt
grep -q 'Blacklisted:[ \t]*0$' 12_temp.txt || cat 12_temp.txt >> 12.txt
rm -f 12_temp.txt

Access an object thorugh the variable name instead of numeric OID using net-snmp

I can ask to a snmp agent the query:
snmpwalk -v2c -c public 192.168.56.70 1.3.6.1.2.1.31.1.1.1.1.1
I recieve "lo" (loopback interface) as the answer. My question is: How I can access that OID through the names instead of using the OID numbers? That should be as follows:
snmpwalk -v2c -c public 192.168.56.70 iso.identified-organization.dod.internet.mgmt.mib-2.ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName
If I send this last query to the snmp agent, i get "Unknown Object Identification". Which changes should I do in the snmp agent configuration to get the same answer as when I am asking through the OID?
Any help will be appreciated, thanks!
Normally I'd use the simple symbolic name e.g.
snmptranslate -M+. -m +ALL 1.3.6.1.2.1.31.1.1.1.1.1
IF-MIB::ifName.1
From the agent's perspective the next two are the same, i.e. the netsnmp snmpwalk utility handles the symbol translations.
snmpwalk -v2c -c public 192.168.56.70 1.3.6.1.2.1.31.1.1.1.1.1
IF-MIB::ifName.1 = STRING: lo
Symbol version :
snmpwalk -v2c -c public 192.168.56.70 IF-MIB::ifName.1
IF-MIB::ifName.1 = STRING: lo
Include the MIB files if they're not in your default path -M+. -m +ALL
snmpwalk -v2c -c public vvx1 IF-MIB::ifName.1
IF-MIB::ifName.1 = STRING: lo

Resources