python中的paramiko模块

有一说一,感觉这个模块挺少看见的

关于python中的paramiko模块

paramiko是基于python实现的ssh2远程安全连接,支持认证及秘钥方式远程执行命令、文件传输、中间ssh代理。
一个简单的远程ssh运行命令:

import paramiko

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect("ip",port,username="****",password="****")
stdin,stdout,stderr = ssh.exec_command("df -h")
result = stdout.read()
print(result.decode())

paramiko核心组件

SSHClient类

SSHClient类是一个SSH服务会话的高级表示,该类封装了传输(transport)、通道(channel)以及SFTPClient的校验,建立的方法,通常用于执行远程命令。

connect方法

connect(self, hostkey=None, username='', password=None, pkey=None,gss_host=None, gss_auth=False, gss_kex=False, gss_deleg_creds=True)

  • hostname(str类型):连接的目标主机地址
  • port:端口
  • username:str
  • password:str
  • pkey(PKey类型):私钥方式,用于身份验证
  • gass_host:kerberos数据库中目标的名称,默认为hostname
  • gss_auth(bool):是否使用GSS-API认证
  • ss_kex=False(bool):是否将GSS-API key和用户认证交换
  • gss_deleg_creds(bool):是否代表包含GSS-API客户端的凭据

exec_command方法

远程执行命令方法,该命令的输入与输入流为标准输入(stdin),输出(stdout),错误(stderr)

load_system_host_keys方法

load_host_keys(self, filename),filename(str类型)指定远程主机公钥记录文件
加载本地要校验文件,默认为~/.ssh/known_hosts
非默认需要自己指定

set_missing_host_key_policy方法:

set_missing_host_key_policy(self, policy)

设置连接的远程主机没有本地主机秘钥或HostKeys对象时的策略,目前支持三种,分别是:AutoAddPolicy、RejectPolicy(默认)、WarningPolicy
三者的含义如下:

  • AutoAddPolicy:自动添加主机名及主机秘钥到本地HostKeys对象,并将其保存,不依赖load_system_host_keys()的配置,即使~/.ssh/known_hosts不存在也不产生影响

  • RejectPolicy:自动拒绝位置的主机名和秘钥,依赖load_system_host_keys()的配置

  • WarningPolicy:用于记录一个位置的主机秘钥的python警告,并接受它,功能上与AutoAddPolicy相似,但未知主机会有警告

SFTPClient类

SFTPClient根据SSH传输协议的sftp命令会话,实现远程文件操作:文件的上传、下载、权限、状态等

from_transport方法

from_transport(cls, t, window_size=None, max_packet_size=None)
其中上面的参数t是一个已经通过验证的传输对象

put方法

长传本地文件到远程SFTP服务端
put(self, localpath, remotepath, callback=None, confirm=True)
参数说明:

  • localpath:需要上传的本地文件
  • remotepath:目标文件路径
  • callback(function(init,init)):获取已接收的字节数以及总传输字节数,一边回调函数调用,默认为None
  • confirm:文件长传完毕后是否调用start()方法,以便缺文件大小

get方法

get(self,remotepath,localpath,callback=None)
从远程SFTP服务端下载本地
参数:

  • remotepath(str类型):需要下载的远程文件
  • localpath(str类型):本地路径
  • callback(function(init,init)): 获取已接收的字节数及总传输字节数,以便回调函数调用,默认为None

其他一些方法

  • SFTPClient类其他常用方法:

  • Mkdir:在SFTP服务端创建目录

  • remove:删除SFTP服务端指定目录

  • rename:重命名SFTP服务端文件或目录

  • stat:获取远程SFTP服务端指定文件的信息

  • listdir:获取远程SFTP服务端指定目录列表,以Python的列表形式返回


   转载规则


《python中的paramiko模块》 Gsuhy 采用 知识共享署名 4.0 国际许可协议 进行许可。
  目录