其他分享
首页 > 其他分享> > paramiko模块使用

paramiko模块使用

作者:互联网

该模块基于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 公钥 root@10.0.0.12
# ssh-copy-id -i id_rsa.pub root@10.0.0.12
# ssh root@10.0.0.12
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
来源: https://www.cnblogs.com/zhouwanchun/p/16650811.html