Ad Widget

Collapse

Need help for creating LLD JSON output

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • dragan979
    Member
    • Apr 2018
    • 49

    #1

    Need help for creating LLD JSON output

    From this code:

    Code:
    items = items[0].split()
    for emailid in items:
        resp, data = conn.uid("fetch",emailid, "(RFC822)")
        if resp == 'OK':
            email_body = data[0][1].decode('utf-8')
            mail = email.message_from_string(email_body)
            #print email_body
            if mail["Subject"].find("PA1") > 0 or mail["Subject"].find("PA2") > 0:
              regex1 = r'(?<!^)JOB:\s*(\S+)'
              #regex2 = r'Job finished'
              #c=re.findall(regex2, email_body, re.IGNORECASE)
              a=re.findall(regex1 ,email_body) #re.IGNORECASE)
              if a:
               b=set(a)
               seen = set()
               result = []
               for item in a:
                  if item not in seen:
                   seen.add(item)
                   result.append(item)
                   output = " ".join(result)

    I'm getting:

    breaches

    rerun_late

    mxpp01

    changes


    i want from above output to create JSON output in following format. From this output i'm trying to create Zabbix external script

    Desired output


    Code:
    {
        "data": [
            {
                "{#job}": "breaches"
            },
            {
               "{#job}": "rerun_late"
            },        
            {
               "{#job}": "mxpp01"
            },
            {
               "{#job}": mxpp01"
            },
            {
             "{#job}": "changes"
            }    
               ]
      }


    I modified above script:


    Code:
    items = items[0].split()
    for emailid in items:
        resp, data = conn.uid("fetch",emailid, "(RFC822)")
        if resp == 'OK':
            email_body = data[0][1].decode('utf-8')
            mail = email.message_from_string(email_body)
            #print email_body
            if mail["Subject"].find("PA1") > 0 or mail["Subject"].find("PA2") > 0:
              regex1 = r'(?<!^)JOB:\s*(\S+)'
              #regex2 = r'Job finished'
              #c=re.findall(regex2, email_body, re.IGNORECASE)
              a=re.findall(regex1 ,email_body) #re.IGNORECASE)
              if a:
               b=set(a)
               seen = set()
               result = []
               for item in a:
                  if item not in seen:
                   seen.add(item)
                   result.append(item)
                   output = " ".join(result)
        data = [{"{#job}": output}]
        print json.dumps({"data": data}, indent=4)
    But getting:

    {
    "data": [
    {
    "{#job}": "breaches"
    }
    ]
    }
    {
    "data": [
    {
    "{#job}": "rerun_late"
    }
    ]
    }
    {
    "data": [
    {
    "{#job}": "mxpp01"
    }
    ]
    }
    {
    "data": [
    {
    "{#job}": "changes"
    }
    ]
    }
    Last edited by dragan979; 26-11-2019, 06:41.
  • dragan979
    Member
    • Apr 2018
    • 49

    #2
    Solved: "forgot" to initialize empty list before "for loop", so list was reset on every iterations

    Comment

    Working...