aboutsummaryrefslogtreecommitdiff
path: root/ssh_support.py
diff options
context:
space:
mode:
authorSander Vrijders <sander.vrijders@intec.ugent.be>2017-02-09 14:56:32 +0100
committerSander Vrijders <sander.vrijders@intec.ugent.be>2017-02-09 14:56:32 +0100
commit53a11eac43187ff12d82605cf8379803697db7b7 (patch)
tree9e83d743b7178b10d901e42df2b3de421320230c /ssh_support.py
parent22b3218c951ebfc0bd2b2bdb89adb59b8a3e5ee7 (diff)
downloadrumba-53a11eac43187ff12d82605cf8379803697db7b7.tar.gz
rumba-53a11eac43187ff12d82605cf8379803697db7b7.zip
rhumba: Create Python package
This transforms the repository into a real Python package.
Diffstat (limited to 'ssh_support.py')
-rw-r--r--ssh_support.py156
1 files changed, 0 insertions, 156 deletions
diff --git a/ssh_support.py b/ssh_support.py
deleted file mode 100644
index 6bc892f..0000000
--- a/ssh_support.py
+++ /dev/null
@@ -1,156 +0,0 @@
-#
-# SSH support for Rhumba
-#
-# Sander Vrijders <sander.vrijders@intec.ugent.be>
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
-# MA 02110-1301 USA
-
-import paramiko
-
-def get_ssh_client():
- ssh_client = paramiko.SSHClient()
- ssh_client.load_system_host_keys()
- ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
-
- return ssh_client
-
-def execute_commands(testbed, hostname, commands, time_out = 3):
- '''
- Remote execution of a list of shell command on hostname. By
- default this function will exit (timeout) after 3 seconds.
-
- @param testbed: testbed info
- @param hostname: host name or ip address of the node
- @param command: *nix shell command
- @param time_out: time_out value in seconds, error will be generated if
- no result received in given number of seconds, the value None can
- be used when no timeout is needed
- '''
- ssh_client = get_ssh_client()
-
- try:
- ssh_client.connect(hostname, 22,
- testbed.username, testbed.password,
- look_for_keys = True, timeout = time_out)
- for command in commands:
- stdin, stdout, stderr = ssh_client.exec_command(command)
- err = str(stderr.read()).strip('b\'\"\\n')
- if err != "":
- err_array = err.split('\\n')
- for erra in err_array:
- print(erra)
- ssh_client.close()
-
- except Exception as e:
- print(str(e))
- return
-
-def execute_command(testbed, hostname, command, time_out = 3):
- '''
- Remote execution of a list of shell command on hostname. By
- default this function will exit (timeout) after 3 seconds.
-
- @param testbed: testbed info
- @param hostname: host name or ip address of the node
- @param command: *nix shell command
- @param time_out: time_out value in seconds, error will be generated if
- no result received in given number of seconds, the value None can
- be used when no timeout is needed
-
- @return: stdout resulting from the command
- '''
- ssh_client = get_ssh_client()
-
- try:
- ssh_client.connect(hostname, 22,
- testbed.username, testbed.password,
- look_for_keys = True, timeout = time_out)
- stdin, stdout, stderr = ssh_client.exec_command(command)
- err = str(stderr.read()).strip('b\'\"\\n')
- if err != "":
- print(err)
- output = str(stdout.read()).strip('b\'\"\\n')
- ssh_client.close()
-
- return output
-
- except Exception as e:
- print(str(e))
- return
-
-def copy_file_to_testbed(testbed, hostname, text, file_name):
- '''
- Write a string to a given remote file.
- Overwrite the complete file if it already exists!
-
- @param testbed: testbed info
- @param hostname: host name or ip address of the node
- @param text: string to be written in file
- @param file_name: file name (including full path) on the host
- '''
- ssh_client = get_ssh_client()
-
- try:
- ssh_client.connect(hostname, 22,
- testbed.username,
- testbed.password,
- look_for_keys=True)
-
- cmd = "touch " + file_name + \
- "; chmod a+rwx " + file_name
-
- stdin, stdout, stderr = ssh_client.exec_command(cmd)
- err = str(stderr.read()).strip('b\'\"\\n')
- if err != "":
- print(err)
-
- sftp_client = ssh_client.open_sftp()
- remote_file = sftp_client.open(file_name, 'w')
-
- remote_file.write(text)
- remote_file.close()
-
- except Exception as e:
- print(str(e))
-
-def setup_vlan(testbed, node_name, vlan_id, int_name):
- '''
- Gets the interface (ethx) to link mapping
-
- @param testbed: testbed info
- @param node_name: the node to create the VLAN on
- @param vlan_id: the VLAN id
- @param int_name: the name of the interface
- '''
- print("Setting up VLAN on node " + node_name)
-
- node_full_name = full_name(node_name, testbed)
- cmd = "sudo ip link add link " + \
- str(int_name) + \
- " name " + str(int_name) + \
- "." + str(vlan_id) + \
- " type vlan id " + str(vlan_id)
- execute_command(testbed, node_full_name, cmd)
- cmd = "sudo ifconfig " + \
- str(int_name) + "." + \
- str(vlan_id) + " up"
- execute_command(node_full_name, cmd, testbed)
- cmd = "sudo ethtool -K " + \
- str(int_name) + " rxvlan off"
- execute_command(node_full_name, cmd, testbed)
- cmd = "sudo ethtool -K " + \
- str(int_name) + " txvlan off"
- execute_command(node_full_name, cmd, testbed)