Create-scans-mail.gmp.py: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „import sys from base64 import b64decode from pathlib import Path import time import datetime task_name=sys.argv[4] portlist="9ddce1ae-57e7-11e1-b13c-406186ea4…“)
(kein Unterschied)

Version vom 30. September 2020, 13:21 Uhr

import sys from base64 import b64decode from pathlib import Path import time import datetime

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.xxx.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 progress


def create_report(tname,reportid):

 time1 = datetime.datetime.now()
 timestamp=time1.strftime('%Y-%m-%d')
 pdf_filename = "/tmp/" + tname + "-" + timestamp + ".pdf"
 pdf_report_format_id = "c402cc3e-b531-11e1-9163-406186ea4fc5"
 response = gmp.get_report(
     report_id=reportid, report_format_id=pdf_report_format_id
  )
 report_element = response[0]
 content = "".join(report_element.itertext())
 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('Done. PDF created: ' + str(pdf_path))
 send_mail("scanner","geheim","scanner@xxx.de","technik@xxx.de","tname" + "-" + timestamp ,pdf_filename ,pdf_filename )

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:
   time.sleep(30)

create_report(task_name,report_id)