python离线安装paramiko模块,python paramiko模块
内容1。导言2。安装3。paramiko核心组件3.1 SSHClient类3.1.1 connect方法3.1.2 exec_command方法3.1.3 load_system_host_key方法3 . 1 . 4 set _ miss Ing _ host _ key _ policy方法3.2 SFTPClient类3 . 2 . 1 from _ Transport 3 . 2 . 2 put 3 . 2 . 3 get 3 . 2 . 4其他3.3远程连接和执行命令3.3.1直接认证模式3.3.2 SSHCli封装的基于公钥的传输3 . 3 . 3 . 3 . 3连接
1.简介paramiko模块基于python实现SSH2远程安全连接,支持认证和密钥模式,可以实现远程连接、命令执行、文件传输、中间SSH代理功能。与pexpect相比,封装级别更高。
2.安装pip安装paramiko
轻松安装paramiko
Paramiko依赖于第三方Crypto、Ecdsa和pyhton-devel,所以需要安装。
3.paramiko核心组件
3.1 SSHClient类SSHClient类是SSH服务会话的高级表示,实现了传输、通道、SFTP验证和建立的方法。
3.1.1 connect方法connect方法实现远程ssh连接并进行验证。
参数
主机名建立连接的目标主机
Port=SSH_PORT指定端口
用户名=无已验证的用户名
密码=无经过身份验证的用户密码
Pkey=无私钥用于身份验证。
Key_filename=None指定私钥文件的文件名或文件列表。
Timeout=None可选tcp连接超时
Allow_agent=True,是否允许连接ssh代理,默认值为True。
Look_for_keys=True是否在~/中搜索私钥文件。ssh,默认值为True。允许
Compress=False,是否要打开压缩?
sock=无,
gss_auth=False,
gss_kex=False,
gss_deleg_creds=True,
gss _ host=无,
横幅_超时=无
3.1.2 exec_command方法是一种远程执行命令的方法。该命令的输入和输出流是标准输入、标记输出和标准错误输出。
参数
由命令执行的命令
缓冲区大小=-1文件缓冲区大小
超时=无
get_pty=False
3 . 1 . 3 load _ system _ host _ key方法夹在本地公钥文件中,默认值为~/。ssh/已知主机。
参数
Filename=None指定本地公钥文件
3.1.4当连接的远程主机没有本地主机密钥或主机密钥对象时,set _ missing _ host _ key _ policy方法设置策略。目前,它支持三种:
AutoAddPolicy自动将主机名和主机密钥添加到本地HostKeys对象中,与load_system_host_key的配置无关。也就是说,在新建立ssh连接时,不需要输入yes或no来确认。WarningPolicy是用于记录未知主机密钥的python警告。并接受它。在功能上类似于AutoAddPolicy,但是会提示新的connection RejectPolicy自动拒绝未知的主机名和密钥,具体取决于load_system_host_key的配置。这是默认选项用法:
ssh.paramiko.SSHClient()
set _ missing _ host _ key _ policy(paramiko。AutoAddPolicy())
3.2 sftpClient类sftpClient作为SFTP的客户端对象,根据ssh传输协议的SFTP会话实现远程文件操作,如上传、下载、权限、状态等。
3.2.1 from_transport创建一个连接的SFTP客户端通道。
定义:
from_transport(cls,t)的示例:
导入paramiko
t=帕拉米科。运输(( 192.168.56.132 ,22))
t.connect(用户名=root ,密码=1234567 )
sftp=paramiko。SFTPClient.from_transport(t)
3.2.2把本地文件上传到服务器。参数confirm:是否调用stat()方法检查文件状态并返回ls -l L的结果。
定义:
put的参数描述(localpath,remotepath,callback=none,confirm=true):
Localpath(str类型),要上传的本地文件(源);Remotepath(字符串类型),远程路径(目标);Call back (function (int,int)),得到接收的字节数和发送的字节总数,从而回调函数调用。默认值为无;确认(bool类型),文件上传后是否调用stat()方法,从而确认文件的大小。示例:
localpath=/home/access.log
远程路径=/data/logs/access。“日志”
sftp.put(本地路径,远程路径)
获取从服务器下载文件到本地
定义:
获取(远程路径,本地路径,回调=无)参数说明:
远程路径(字符串类型),需要下载的远程文件(源);回调(函数(int,int)),获取已接收的字节数及总和传输字节数,以便回调函数调用,默认为没有。
示例说明:远程路径=/data/logs/access。“日志”
localpath=/home/access.log
sftp.get(远程路径,本地路径)
3.2.4 其他移除()在服务器上删除目录重命名()在服务器上重命名目录统计()查看服务器文件状态列表目录()列出服务器目录下的文件
3.3 远程连接并执行命令实现远程连接主机,并执行命令,同时记录日志
3.3.1 直接验证方式导入简单讲解及作业需求
主机=172.16.200.45
端口=22
user=root
passwd=123123
# 创建嘘对象
ssh=paramiko .SSHClient()
# 允许连接不在认识_主机文件中的主机
嘘。set _ missing _ host _ key _ policy(paramiko .AutoAddPolicy())
# 连接服务器
ssh.connect(主机名=主机,端口=端口,用户名=用户,密码=密码)
帕拉米科。util。日志文件(中的系统日志。日志)#将登录信息记录日志
# 执行命令
stdin,stdout,stderr=ssh.exec_command(df )
# 获取命令结果
result=stdout.read()
打印(结果)
# 关闭连接
ssh.close()
嘘客户端封装Transportimport paramiko
主机=172.16.200.45
端口=22
user=root
passwd=123123
transport=paramiko .传输((主机,端口))
传输.连接(用户名=用户,密码=密码)
ssh=paramiko .SSHClient()
嘘. transport=运输
stdin,stdout,stderr=ssh.exec_command(df )
print(stdout.read())
3.3.3 基于公钥密钥连接导入简单讲解及作业需求
private_key=paramiko .RSA密钥。from _ private _ key _ file(/home/fuzengjie/).ssh/id _ RSA’)
# 创建嘘对象
ssh=paramiko .SSHClient()
# 允许连接不在认识_主机文件中的主机
嘘。set _ missing _ host _ key _ policy(paramiko .AutoAddPolicy())
# 连接服务器
ssh.connect(主机名=172.16.200.45 ,端口=22,用户名=fuzengjie ,key=private_key)
# 执行命令
stdin,stdout,stderr=ssh.exec_command(df )
# 获取命令结果
result=stdout.read()
# 关闭连接
ssh.close()
嘘客户端封装运输使用公钥方式导入简单讲解及作业需求
private_key=paramiko .RSA密钥。from _ private _ key _ file(/home/fuzengjie/).ssh/id _ RSA’)
transport=paramiko .运输(( 172.16.200.45 ,22))
传输.连接(用户名=fuzengjie ,pkey=private_key)
ssh=paramiko .SSHClient()
嘘. transport=运输
stdin,stdout,stderr=ssh.exec_command(df )
transport.close()
3.4 远程连接实现文件上传下载
3.4.1 基于用户名密码上传下载导入简单讲解及作业需求
主机=172.16.200.45
端口=22
user=root
passwd=123123
transport=paramiko .传输((主机,端口))
传输.连接(用户名=用户,密码=密码)
sftp=paramiko .SFTPClient.from_transport(传输)
# 将location.py上传至服务器/tmp/test.py
a=sftp.put(/Users/fuzengjie/1 ,/tmp/fuzz 123 ,confirm=True)
打印(一)#打印上传到服务器上的文件状态
# 将移除路径下载到本地本地路径
sftp.get(/root/tesst.py ,/Users/fuzengjie/test.py )
transport.close()
3.4.2 基于公钥密钥上传下载导入简单讲解及作业需求
private_key=paramiko .RSA密钥。from _ private _ key _ file(/home/fuzengjie/).ssh/id _ RSA’)
transport=paramiko .运输(( 172.16.200.45 ,22))
传输.连接(用户名=fuzengjie ,pkey=private_key)
sftp=paramiko .SFTPClient.from_transport(传输)
# 将location.py上传至服务器/tmp/test.py
sftp.put(/tmp/location.py ,/tmp/test.py )
# 将移除路径下载到本地本地路径
sftp.get(/root/123.txt ,/tmp/123 )
transport.close()参考资料:
http://docs.paramiko.org/en/2.4/api/client.html?突出显示=连接
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。