aibond/tools/Linux/SSH/__init__.py (30 lines of code) (raw):
#!/usr/bin/python
# -*- coding: UTF-8 -*-
from typing import Dict
import paramiko
def ssh(command:str, host: str, username: str = "root", password: str = None) -> Dict:
"""A tool that can connect to a remote server and execute commands to retrieve returned content."""
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(host, username=username, password=password)
stdin, stdout, stderr = ssh.exec_command(command)
retcode = stdout.channel.recv_exit_status()
output_stdout = stdout.read().decode('utf-8')
output_stderr = stderr.read().decode('utf-8')
stdin = None
stdout = None
stderr = None
ssh.close()
return {"stdout": output_stdout, "stderr": output_stderr, "exitStatus": retcode}
class SshClient():
"""A tool that can connect to a remote server and execute commands to retrieve returned content."""
_client = None
def __init__(self, host: str, username: str = "root", password: str = None):
self._client = paramiko.SSHClient()
self._client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
self._client.connect(host, username=username, password=password)
def exec_command(self, command: str) -> Dict:
stdin, stdout, stderr = self._client.exec_command(command)
retcode = stdout.channel.recv_exit_status()
output_stdout = stdout.read().decode('utf-8')
output_stderr = stderr.read().decode('utf-8')
stdin = None
stdout = None
stderr = None
return {"stdout": output_stdout, "stderr": output_stderr, "exitStatus": retcode}