1#!/usr/bin/env python3
2
3
4import os
5import sys
6
7# ---------Set sys.path for pluqin execution---------------------------------------
8# Absolute path to this plugin
9abs_path = os.path.abspath(os.path.dirname(sys.argv[0]))
10# full_path to plugins parent directory
11full_path = abs_path.split("plugins")[0]
12sys.path.append(full_path)
13# Walk path and append to sys.path
14for root, dirs, files in os.walk(full_path):
15    for found_dir in dirs:
16        sys.path.append(os.path.join(root, found_dir))
17
18# ssh_utility is in ../lib
19from ssh_utility import SSHRemoteclient  # NOQA
20
21
22def ssh_execute_cmd(
23    hostname, username, password, port_ssh, command, timeout=60, type=None
24):
25    r"""
26    Description of argument(s):
27
28    hostname        Name/IP of the remote (targeting) host
29    username        User on the remote host with access to FFCD files
30    password        Password for user on remote host
31    port_ssh        SSH port value. By default 22.
32    command         Command to run on remote host
33    timeout         Time, in second, to wait for command completion
34    type            Data type return as list or others.
35    """
36    ssh_remoteclient = SSHRemoteclient(hostname, username, password, port_ssh)
37
38    cmd_exit_code = 0
39    err = ""
40    response = ""
41    if ssh_remoteclient.ssh_remoteclient_login():
42        """
43        cmd_exit_code: command exit status from remote host
44        err: stderr from remote host
45        response: stdout from remote host
46        """
47        cmd_exit_code, err, response = ssh_remoteclient.execute_command(
48            command, int(timeout)
49        )
50
51    # Close ssh session
52    if ssh_remoteclient:
53        ssh_remoteclient.ssh_remoteclient_disconnect()
54
55    if type == "list":
56        return response.split("\n")
57    else:
58        return response
59