Start-task-complete.gmp-py
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)