Après avoir importé un template rpm zabbix sur un de mes hôtes j'ai cette erreur sur le code qui me bloque
English: After importing a zabbix rpm template on one of my hosts I have this error on the code that is blocking me
Invalid discovery rule value: cannot parse as a valid JSON object: invalid object format, expected opening character '{' or '[' at: 'delimiter nor 6 ot 10'
voici le code :
English: After importing a zabbix rpm template on one of my hosts I have this error on the code that is blocking me
Invalid discovery rule value: cannot parse as a valid JSON object: invalid object format, expected opening character '{' or '[' at: 'delimiter nor 6 ot 10'
voici le code :
#!/usr/bin/python """ Zabbix discovery junper rpm tests external script this script is intended to find RPM (Real test perfomance monitoring) owners and tests out of a juniper network devices the script accepts 2 arguments: hostname and community and returns a structured data back to a zabbix server first it does snmpwalk over jnxRpmResSumSent MIB Object from a device perspective it looks like this: user@ex2200> show snmp mib walk jnxRpmResSumSent ascii jnxRpmResSumSent."ISP1"."Test1".1 = 14 jnxRpmResSumSent."ISP1"."Test1".2 = 15 jnxRpmResSumSent."ISP1"."Test1".4 = 45614 jnxRpmResSumSent."ISP2"."Test2".1 = 13 jnxRpmResSumSent."ISP2"."Test2".2 = 15 jnxRpmResSumSent."ISP2"."Test2".4 = 6073 using jnxRpmResSumSent MIB Object we can find all existed tests. even those that are not performed successfully returned data are being structured to a form of a Zabbix discobery JSON { data: [ {"{#RPMUUID}":"3.73.83.80.49.6.84.69.83.84.49", "{#RPMOWNER}":"ISP1", "{#RPMTEST}":"Test1" }, {"{#RPMUUID}":"4.73.83.80.50.84.69.83.84.50", "{#RPMOWNER}":"ISP2", "{#RPMTEST}":"Test2" }, ]} """ import sys from pysnmp.hlapi import * import json def findsubstrings(s): la = s.split('.') lb = la[1:] if '6' in lb: # looking for a delimiter. 6 for EX or 8,10 for SRX i = lb.index('6') elif '8' in lb: i = lb.index('8') elif '10' in lb: i = lb.index('10') else: sys.stderr.write("delimiter nor 6 ot 10") exit(0) l1 = lb[:i] l2 = lb[i+1:] param2 = ''.join([chr(int(i)) for i in l1]) param3 = ''.join([chr(int(i)) for i in l2]) return param2, param3 eRR = '{ data: ["Error parsing arguments"]}\n' if len(sys.argv)!=3: sys.stderr.write(eRR) exit() hostname = sys.argv[1] community=sys.argv[2] jnxRpmResSumSent = "1.3.6.1.4.1.2636.3.50.1.2.1.2" l = [] # init snmpwalk over jnxRpmResSumSent MIB Object varBind = nextCmd(SnmpEngine(), CommunityData(community), UdpTransportTarget((hostname, 161)), ContextData(), ObjectType(ObjectIdentity(jnxRpmResSumSent)), lexicographicMode=False) # do snmmpwalk and collect an rpm specific substring for res in varBind: s = str(res[3][0][0])[len(jnxRpmResSumSent)+1:-2] l.append(s) # lets make values inside the list l uniq u = set(l) jsonData=[] for param1 in u: d={} param2, param3 = findsubstrings(param1) d["{#RPMUUID}"] = param1 d["{#RPMOWNER}"] = param2 d["{#RPMTEST}"] = param3 jsonData.append(d) print (json.dumps({"data": jsonData}, indent=4))
Larz60+ write Apr-02-2021, 01:40 PM:
Please post all code, output and errors (it it's entirety) between their respective tags. Refer to BBCode help topic on how to post. Use the "Preview Post" button to make sure the code is presented as you expect before hitting the "Post Reply/Thread" button.
Fixed for you this time. Please use bbcode tags on future posts
Please post all code, output and errors (it it's entirety) between their respective tags. Refer to BBCode help topic on how to post. Use the "Preview Post" button to make sure the code is presented as you expect before hitting the "Post Reply/Thread" button.
Fixed for you this time. Please use bbcode tags on future posts