summaryrefslogtreecommitdiffstats
path: root/testcases/SECTests/connect.py
diff options
context:
space:
mode:
Diffstat (limited to 'testcases/SECTests/connect.py')
-rw-r--r--testcases/SECTests/connect.py104
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()