diff options
author | lukehinds <lukehinds@gmail.com> | 2016-04-18 11:46:58 +0100 |
---|---|---|
committer | lukehinds <lukehinds@gmail.com> | 2016-04-18 12:35:58 +0100 |
commit | 62185d58e1376fdbd2ec58cb9d592954d09fbd3d (patch) | |
tree | 24b7766a94c0cff0bbf3a44a09ce0616462fb2a0 /testcases/SECTests/connect.py | |
parent | 7bc6b5ca7562293f7fb9f8f8fd4f60320699e240 (diff) |
Author: Luke Hinds <lhinds@redhat.com>
Date: Mon 18 Apr 11:48:27 2016 +0100
JIRA: FUNCTEST-169 Inital commit of security test code
The following code peforms NFVi based SCAP security scans.
This code is still pending integration with functest scripts,
for when flashtest development is complete.
Amend: Removed pyc file, requirements.txt and fixed flake8
Change-Id: Ie182ae5c21d36218f5c9b389c4b6e63ecbf1d151
Signed-off-by: lukehinds <lukehinds@gmail.com>
Diffstat (limited to 'testcases/SECTests/connect.py')
-rw-r--r-- | testcases/SECTests/connect.py | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/testcases/SECTests/connect.py b/testcases/SECTests/connect.py new file mode 100644 index 000000000..fe8fbacfd --- /dev/null +++ b/testcases/SECTests/connect.py @@ -0,0 +1,104 @@ +#!/usr/bin/python +# +# Copyright (c) 2016 Red Hat +# Luke Hinds (lhinds@redhat.com) +# This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# 0.1: OpenSCAP paramiko connection functions + +import os +import paramiko + +__version__ = 0.1 +__author__ = 'Luke Hinds (lhinds@redhat.com)' +__url__ = 'http:/https://wiki.opnfv.org/display/security' + + +class connectionManager: + def __init__(self, hostname, user, password, *args): + self.hostname = hostname + self.user = user + self.password = password + self.args = args + + def remotescript(self): + localpath = self.args[0] + remotepath = self.args[1] + com = self.args[2] + + client = paramiko.SSHClient() + client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) + client.connect(self.hostname, 22, self.user, self.password) + + sftp = client.open_sftp() + sftp.put(localpath, remotepath) + + output = "" + stdin, stdout, stderr = client.exec_command(com) + stdout = stdout.readlines() + sftp.remove(remotepath) + client.close() + + # Spool it back (can be improved at later point) + for line in stdout: + output = output + line + if output != "": + return output + + def remotecmd(self): + com = self.args[0] + client = paramiko.SSHClient() + client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) + client.connect(self.hostname, 22, self.user, self.password) + output = "" + stdin, stdout, stderr = client.exec_command(com) + stdout = stdout.readlines() + client.close() + + # Spool it back (can be improved at later point) + for line in stdout: + output = output + line + if output != "": + return output + else: + print "There was no output for this command" + + def run_tool(self): + dist = self.args[0] + report = self.args[1] + com = self.args[2] + client = paramiko.SSHClient() + client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) + client.connect(self.hostname, 22, self.user, self.password) + + output = "" + stdin, stdout, stderr = client.exec_command(com) + stdout = stdout.readlines() + client.close() + + # Spool it back (can be improved at later point) + for line in stdout: + output = output + line + if output != "": + return output + + def download_reports(self): + dl_folder = self.args[0] + reportfile = self.args[1] + reportname = self.args[2] + resultsname = self.args[3] + transport = paramiko.Transport((self.hostname, 22)) + transport.connect(username=self.user, password=self.password) + sftp = paramiko.SFTPClient.from_transport(transport) + + # Download the reportfile (html) and the results (xml) + print 'Downloading \"{0}\"...'.format(reportname) + sftp.get(reportfile, ('{0}/{1}'.format(dl_folder, reportname))) + print 'Downloading \"{0}\"...'.format(resultsname) + sftp.get(reportfile, ('{0}/{1}'.format(dl_folder, resultsname))) + sftp.close() + transport.close() |