ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

paramiko模块使用

2022-09-02 18:00:38  阅读:191  来源: 互联网

标签:模块 paramiko stdout private ssh key 使用 transport


该模块基于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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有