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)