Start-task-complete.gmp-py
import sys from base64 import b64decode from pathlib import Path import time import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.mime.base import MIMEBase from email import encoders import os.path import datetime import os
user="heinz.test" password="geheim" mail_from="scanner@xxx.com" mail_to="technik@hubis.de" mail_server="thor.xxxn.de" mail_port=587
task_name=sys.argv[4] portlist="9ddce1ae-57e7-11e1-b13c-406186ea4fc5" scanconf="698f691e-7489-11df-9d8c-002264764cea" openvas="08b69003-5fc2-4037-a479-93b440211c73" pdf_report_format_id = "c402cc3e-b531-11e1-9163-406186ea4fc5"
def send_mail(user,password,from_email,to_email,subject,message,file_location):
msg = MIMEMultipart()
msg['From'] = from_email
msg['To'] = to_email
msg['Subject'] = subject
msg.attach(MIMEText(message, 'plain'))
# Setup the attachment
filename = os.path.basename(file_location)
attachment = open(file_location, "rb")
part = MIMEBase('application', 'octet-stream')
part.set_payload(attachment.read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', "attachment; filename= %s" % filename)
# Attach the attachment to the MIMEMultipart object
msg.attach(part)
server = smtplib.SMTP('thor.tuxmen.de', 587)
server.starttls()
server.login(user, password)
text = msg.as_string()
server.sendmail(from_email, to_email, text)
server.quit()
def find_task(tname):
res = gmp.get_tasks()
for i, task in enumerate(res.xpath('task')):
id = task.xpath('@id')[0]
name = task.xpath('name/text()')[0]
if name == tname:
return id
def status_task(tname):
res = gmp.get_tasks()
for i, task in enumerate(res.xpath('task')):
id = task.xpath('@id')[0]
name = task.xpath('name/text()')[0]
if name == tname:
status = task.xpath('status/text()')[0]
return status
def progress_task(tname):
res = gmp.get_tasks()
for i, task in enumerate(res.xpath('task')):
id = task.xpath('@id')[0]
name = task.xpath('name/text()')[0]
if name == tname:
progress = task.xpath('progress/text()')[0]
return progres
def create_report(tname,reportid):
pdf_filename = "/tmp/" + tname + "-" + timestamp + ".pdf"
pdf_report_format_id = "c402cc3e-b531-11e1-9163-406186ea4fc5"
response = gmp.get_report(
report_id=report_id, report_format_id=pdf_report_format_id
)
report_element = response.find("report")
content = report_element.find("report_format").tail
binary_base64_encoded_pdf = content.encode('ascii')
binary_pdf = b64decode(binary_base64_encoded_pdf)
pdf_path = Path(pdf_filename).expanduser()
pdf_path.write_bytes(binary_pdf)
print("PDF: " + pdf_filename + " created")
return pdf_filename
time1 = datetime.datetime.now() timestamp=time1.strftime('%Y-%m-%d_%H_%M') print("Task start: " + task_name + " " + timestamp) task_id = find_task(task_name) res=gmp.start_task(task_id) report_id=res[0].text
while True:
if status_task(task_name) == "Done":
break
else:
print("Status: " + status_task(task_name) + " " + progress_task(task_name) + "%" )
time.sleep(30)
time1 = datetime.datetime.now() timestamp=time1.strftime('%Y-%m-%d_%H_%M')
pdf = create_report(task_name,report_id) sub = task_name + "-" + timestamp send_mail(user,password,mail_from,mail_to,sub,pdf,pdf ) print("Task end: " + task_name + " " + timestamp)