Start-task-complete.gmp-py

Aus Xinux Wiki
Version vom 2. Oktober 2020, 12:50 Uhr von Thomas.will (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „import sys from base64 import b64decode from pathlib import Path import time import smtplib from email.mime.text import MIMEText from email.mime.multipart impo…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

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)