Start-task-complete.gmp-py

Aus Xinux Wiki
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)