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…“)
 
 
Zeile 1: Zeile 1:
 +
<pre>
 
import sys
 
import sys
 
from base64 import b64decode
 
from base64 import b64decode
Zeile 89: Zeile 90:
  
 
create_report(task_name,report_id)
 
create_report(task_name,report_id)
 +
</pre>

Aktuelle 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)