该模块基于ssh用于连接远程服务器并执行相关操作。 SSHClient 用于连接远程服务器并执行基本命令 pip3 install paramiko
# 基于用户名和密码 import paramiko # 创建ssh对象 ssh = paramiko.SSHClient() # 允许连接不在know_hosts文件中的主机 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 连接服务器 ssh.connect(hostname='10.0.0.12', port=22, username='root', password='mysql') # 执行命令 stdin, stdout, stderr = ssh.exec_command('df -Th') # 获取命令结果 result = stdout.read().decode('utf8') # 关闭连接 ssh.close() stdout.close() print(result)
# SSHClient封装Transport import paramiko transport = paramiko.Transport(('10.0.0.12', 22)) transport.connect(username='root', password='mysql') ssh = paramiko.SSHClient() ssh._transport = transport stdin, stdout, stderr = ssh.exec_command('df') result = stdout.read().decode() transport.close() print(result)
# 基于公钥和私钥,请提前执行ssh-copy-id # ssh-copy-id -i 公钥 [email protected] # ssh-copy-id -i id_rsa.pub [email protected] # ssh [email protected] import paramiko # 私钥的地址 private_key = paramiko.RSAKey.from_private_key_file('/Users/zhouwanchun/.ssh/id_rsa') # 创建ssh对象 ssh = paramiko.SSHClient() # 允许连接不在know_hosts文件中的主机 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 连接服务器 ssh.connect(hostname='10.0.0.12', port=22, username='root', pkey=private_key) # 执行命令 stdin, stdout, stderr = ssh.exec_command('df -Th') # 获取命令结果 result = stdout.read().decode('utf8') # 关闭连接 ssh.close() stdout.close() print(result)
# SSHClient封装Transport import paramiko private_key = paramiko.RSAKey.from_private_key_file('/Users/zhouwanchun/.ssh/id_rsa') transport = paramiko.Transport(('10.0.0.12', 22)) transport.connect(username='root', pkey=private_key) ssh = paramiko.SSHClient() ssh._transport = transport stdin, stdout, stderr = ssh.exec_command('df -Th') result = stdout.read().decode() transport.close() print(result)
# 基于私钥字符串进行连接 import paramiko from io import StringIO key_str = """-----BEGIN OPENSSH PRIVATE KEY----- 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 -----END OPENSSH PRIVATE KEY-----""" private_key = paramiko.RSAKey(file_obj=StringIO(key_str)) transport = paramiko.Transport(('10.0.0.12', 22)) transport.connect(username='root', pkey=private_key) ssh = paramiko.SSHClient() ssh._transport = transport stdin, stdout, stderr = ssh.exec_command('df') result = stdout.read().decode() transport.close() print(result)
# SFTPClient 用于连接远程服务器并执行上传下载文件 # 基于用户名和密码 import paramiko transport = paramiko.Transport(('10.0.0.12', 22)) transport.connect(username='root', password='mysql') sftp = paramiko.SFTPClient.from_transport(transport) # 将local_path上传到remove_path sftp.put('/tmp/1.py', '/tmp/test.py') # 将remove_path下载到local_path sftp.get('/tmp/test.py', '/tmp/2.py') transport.close() # 基于公钥和私钥 import paramiko private_key = paramiko.RSAKey.from_private_key_file('/Users/zhouwanchun/.ssh/id_rsa') transport = paramiko.Transport(('10.0.0.12', 22)) transport.connect(username='root', pkey=private_key) sftp = paramiko.SFTPClient.from_transport(transport) # 将local_path上传到remove_path sftp.put('/tmp/1.py', '/tmp/test.py') # 将remove_path下载到local_path sftp.get('/tmp/test.py', '/tmp/2.py') transport.close()
标签:模块,paramiko,stdout,private,ssh,key,使用,transport From: https://www.cnblogs.com/zhouwanchun/p/16650811.html