Get ITSM Monitoring ,Procedure and Patch Management logs Report

Hi all,

Please use below script to get all ITSM logs as CSV file report. Also you have an option to print logs in ITSM portal.

Edit parameters:
sendemail=1 -> Edit “sendemail=1” to send csv report in email or Edit “sendemail=0” to print the output in ITSM portal

Edit Email recipients,message and smtp details if sendemail=1 is set
emailto =[‘xyz@gmail.com’,‘pqr@gmail.com’]
emailfrom = “yyyyyy@gmail.com
password = “12345678”
smtpserver=‘smtp.gmail.com
port=587
msgbody=“Hi ,
Please find ITSM logs in the attached CSV file”


#Edit sendemail=0 to print monitoring logs to ITSM execution logs
#Edit sendemail=1 to Email monitoring logs in csv format to recipients 
sendemail=1
#Edit Email recipients and smtp details if you wish to email report
emailto =['************@gmail.com','************@gmail.com','************@gmail.com'] 
emailfrom = "********@gmail.com"
password = "********"
smtpserver='smtp.gmail.com'
port=587
msgbody="Hi , 
 Please find ITSM logs in the attached CSV file"


import os
import re
drive=os.environ['SYSTEMDRIVE']
device=os.environ['COMPUTERNAME']
if  'PROGRAMW6432' in os.environ.keys():
    path=drive+r'\Program Files (x86)\COMODO\Comodo ITSM\rmmlogs'
else:
    path=drive+r'\Program Files\COMODO\Comodo ITSM\rmmlogs'



filelist = [f for f in os.listdir(path) if re.match( r'Rmm_dll.*' , f)]
num=list(range(1,len(filelist)))


out=open(path+'\	emp1.txt','w')
fo=open(path+'\\Rmm_dll.log', "r+")
out.write(fo.read())

for file in num:
        fo=open(path+'\\Rmm_dll.log.'+str(file), "r+")
        out.write(fo.read())
        fo.close()

out.close()


t1=open(path+'\	emp1.txt',"r+")
abstract=t1.readlines()
t1.close()

t2=open(path+'\	emp2.txt',"w+")
for i in list(range(len(abstract))):
    if ('MsgMonitorSetAlert: status: STATUS_ON' in abstract[i]) and  ("if ('MsgMonitorSetAlert: status: STATUS_ON' in abstract[i])"  not in abstract[i]):
         (count,find)=(i,i)
         for k in abstract[count+1:]:
              find=find +1
              if  'Session ID' in k:
                  t2.write(''.join(abstract[count:find]))
                  t2.write("
")
                  break    
t2.close()

if  'PROGRAMW6432' in os.environ.keys():
    pmpath=drive+r'\Program Files (x86)\COMODO\Comodo ITSM\pmlogs'    
else:
    pmpath=drive+r'\Program Files\COMODO\Comodo ITSM\pmlogs'    

filelist = [f for f in os.listdir(pmpath) if re.match( r'PatchInventoryCollector.*' , f)]
num=list(range(1,len(filelist)))
num.sort(reverse=True)


pmout=open(pmpath+r'	emp5.txt','w+')
for file in num:
        fo=open(pmpath+'\\PatchInventoryCollector.log.'+str(file), "r+")
        pmout.write(fo.read())
        fo.close()

pmfo=open(pmpath+'\\PatchInventoryCollector.log', "r+")
pmout.write(pmfo.read())
pmout.close()

t1=open(pmpath+r'	emp5.txt',"r+")
pmlogs=t1.readlines()
t1.close()


import csv
if sendemail==1:
    def emailreport(emailto,emailfrom,fileToSend,password,smtpserver,port,msgbody):
        import smtplib
        import mimetypes
        from email.mime.multipart import MIMEMultipart
        from email import encoders
        from email.message import Message
        from email.mime.audio import MIMEAudio
        from email.mime.base import MIMEBase
        from email.mime.image import MIMEImage
        from email.mime.text import MIMEText
        import os    
        msg = MIMEMultipart()
        msg["From"] = emailfrom
        msg["To"] = ",".join(emailto)
        msg["Subject"] = "ITSM log reports in CSV"
        msg.preamble = "ITSM log reports in CSV"
        body = MIMEText(msgbody)
        msg.attach(body)
        with open(fileToSend) as fp:
            record = MIMEBase('application', 'octet-stream')
            record.set_payload(fp.read())
            encoders.encode_base64(record)
            record.add_header('Content-Disposition', 'attachment',
            filename=os.path.basename(fileToSend))
            msg.attach(record)
        try:
            server = smtplib.SMTP(smtpserver,port)
            server.ehlo()
            server.starttls()
            server.login(emailfrom, password)
            server.sendmail(emailfrom, emailto, msg.as_string())
            server.quit()
            print("Email sent successfully")
        except Exception as E:
            print (E)



t2=open(path+'\	emp3.txt',"w+")

for i in list(range(len(abstract))):
    if 'MsgProcedureRule/name:' in abstract[i]:
        t2.write(abstract[i])        
    elif 'MsgProcedureReply: status: PROCEDURE_FINISHED' in abstract[i]:
        t2.write(abstract[i])
        for j in abstract[i:]:
             if 'MsgProcedureReply: runnerUsername' in j:
                     t2.write(j)
                     break
    elif 'MsgProcedureResult: procedureData:' in abstract[i]:
         (count,find)=(i,i)
         for k in abstract[count+1:]:
              find=find +1
              if  'Session ID' in k:
                  t2.write('
'.join(abstract[count:find]))
                  t2.write('


')
                  break    
t2.close()

new=open(path+'\	emp4.txt','w')
with open(path+'\	emp3.txt','r+') as file1:
    for line in file1:
        if  'MsgProcedureRule/name' in line:
            new.write('

')
            new.write("############################ PROCEDURE EXECUTION STATUS!!################################
")
            new.write(line)
        elif not line.isspace():
            new.write(line)

file1.close()
new.close()


f2read=open(path+'\	emp2.txt',"r+")
logs1=f2read.readlines()
f2read.close()

f3read=open(path+'\	emp4.txt',"r+")
logs2=f3read.readlines()
f3read.close()


if sendemail==1:
    temp=os.environ['TEMP']
    FileToSend = temp+r'\ITSM_logs.csv'    
    with open(FileToSend,"wb") as file2send:
        spamwriter= csv.writer(file2send, delimiter=' ',quotechar=' ', quoting=csv.QUOTE_MINIMAL)
        spamwriter.writerow("ITSM Monitoring logs")
        spamwriter.writerow("
")        
        for line in logs1:
            file2send.write(line)
        spamwriter.writerow("
")
        spamwriter.writerow("ITSM Procedure  logs")
        spamwriter.writerow("
")
        for l in logs2:
            file2send.write(l)
        spamwriter.writerow("
")
        spamwriter.writerow("ITSM Patch Management  logs")
        spamwriter.writerow("
")
        for j in pmlogs:
            file2send.write(j)        
        file2send.close()    
        emailreport(emailto,emailfrom,FileToSend,password,smtpserver,port,msgbody)
else:
    print("ITSM Monitoring logs
")
    for line in logs1:
        print line
    print("ITSM Procedure logs
")
    for line in logs2:
        print line
    print("ITSM Pacth Management logs
")
    for line in pmlogs:
        print line



try:
    os.remove(path+'\	emp1.txt')
    os.remove(path+'\	emp2.txt')
    os.remove(path+'\	emp3.txt')
    os.remove(path+'\	emp4.txt')
    os.remove(path+'\	emp5.txt')
except:
    pass



Sample outputs

Note: CSV file should not be separated by any of the fields for this report. Refer screenshot

20170311-Get-ITSM-Monitoring-Procedure-and-Patch-Management-logs-Report.json (9.3 KB)