Forum Discussion
I was checking on this & we were able to come up with a script that analyzes different VLAN(s) - using the actual VLAN context.
I believe it's working as intended, however, the actual output of the snmp.get (on the TCN OID - .1.3.6.1.2.1.17.2.3.0) it's being automatically converted into a readable date (which I don't want, I want the RAW value in ticks).
Example of how it's been printed within LM groovy:
If I do a get on the same exact OID (outside of LM) it'll output the actual raw value (in time ticks) - example below
This is the script I've so far (I just need to solve this in order to have a working DS - which I can share later, since the AD script changes a little bit):
import com.santaba.agent.groovyapi.expect.Expect; import com.santaba.agent.groovyapi.snmp.Snmp; import com.santaba.agent.groovyapi.http.*; import com.santaba.agent.groovyapi.jmx.*; import org.xbill.DNS.*; import com.santaba.agent.groovyapi.snmp.Snmp; //array to store the interfaces array_vlans = []; //OID variables stpTCN=".1.3.6.1.2.1.17.2.3.0" //get the actual TCN for the STP (for each VLAN) vlan_indexes = ".1.3.6.1.4.1.9.9.46.1.3.1.1.3" //CISCO VLAN MIB //device variables deviceIP = hostProps.get("system.hostname"); snmpCommunity_raw = hostProps.get("snmp.community"); snmpVersion = hostProps.get("snmp.version"); interfaceWalk = Snmp.walk(deviceIP, vlan_indexes) interfaceWalk.eachLine() { line -> vlanType= line.minus(vlan_indexes + ".").split(" = ")[1] //get the content of the specific OID vlanNumber_raw= line.minus(vlan_indexes + ".").split(" = ")[0] //get the actual extra OID portion that was added (since that's the actual VLAN ID) vlanNumber = vlanNumber_raw.replace("1.", ""); //remove the WEIRD '1.' that get's added to the OID if(vlanType != "1"){ //doNothing (since we only care about type==1 [ethernet]) }else{ //DEBUG print /*println "####" println "VLAN Type -> " +vlanType println "VLAN Number -> " +vlanNumber*/ array_vlans.push(vlanNumber); //add VLANS(s) to the array } } //iterate over the VLAN array & do the SNMP GET per vlan (to retrieve the TopologyChange metric) array_vlans.each(){ vlanID=it snmpCommunity=snmpCommunity_raw+"@"+vlanID getVlan_TCN= Snmp.get(deviceIP, snmpCommunity, snmpVersion, stpTCN); println vlanID+".LastTopologyChange="+getVlan_TCN }
If you guys could help it would be great. I'm pretty sure that groovy is doing some post-processing on the snmp.get result and/or I'm doing something wrong.
Regards,
Related Content
- 2 years ago
- 2 years ago
- 8 months ago