paramiko简单封装

安装

1
pip install paramiko

使用

1
2
3
4
5
6
7
8
9
10
11
12
import paramiko  

class SSH(object):
def __init__(self, host: str, port: int, username: str, password=None, key_path=None):
self.host = host
self.port = port
self.username = username
self.password = password
self.key_path = key_path
self.ssh: paramiko.client.SSHClient = None
self.sftp: paramiko.SFTPClient = None

def connect(self):  
    self.ssh = paramiko.SSHClient()  
    # 设置信任远程机器,允许访问  
    self.ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())  
    transport = paramiko.Transport((self.host, self.port))  
    if self.password:  
        self.ssh.connect(hostname=self.host, port=self.port, username=self.username, password=self.password)  
        transport.connect(username=self.username, password=self.password)  
    else:  
        private_key = paramiko.RSAKey.from_private_key_file(self.key_path)  
        self.ssh.connect(hostname=self.host, port=self.port, username=self.username, pkey=private_key)  
        transport.connect(username=self.username, pkey=private_key)  

    self.sftp = paramiko.SFTPClient.from_transport(transport)  

def execute(self, order: str):  
    return self.ssh.exec_command(order)  

def put(self, src_path: str, dest_path: str):  
    self.sftp.put(src_path, dest_path)  

def get(self, src_path: str, dest_path: str):  
    self.sftp.get(src_path, dest_path)  
1
2
3
4
5
6
7
8
9
10
11
12
13
if __name__ == '__main__':  
ssh = SSH(host='host', port=22, username='username', key_path='')
ssh.connect()
stdin, stdout, stderr = ssh.execute('ls')
print(str(stdout.read()))
print(str(stderr.read()))
#
# for line in stdout:
    # print('stdout', line.strip("\n"))
    # for line in stderr:
    # print('err', line.strip("\n"))
    ssh.put('./hello.txt', '/opt/hello.txt')
ssh.get('/opt/hello.txt', 'd:/hello.txt')
作者

建指所向

发布于

2022-08-22

更新于

2023-11-07

许可协议