安装
使用
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')
|