python的paramiko的核心组件

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chengqiuming/article/details/87951117

一 SSHClient类

1 点睛

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

一个简单的例子:

client = SSHClient() 
client.load_system_host_keys() 
client.connect('ssh.example.com') 
stdin, stdout, stderr = client.exec_command('ls -l')

2 connect方法

connect方法实现了远程SSH连接并校验。

方法定义:

connect(self, hostname, port=22, username=None, password=None, pkey=None, key_filename=None, timeout=None, allow_agent=True, look_for_keys=True, compress=False)

参数说明:

  • hostname(str类型):连接的目标主机地址; 

  • port(int类型):连接目标主机的端口,默认为22; 

  • username(str类型):校验的用户名(默认为当前的本地用户 名); 

  • password(str类型):密码用于身份校验或解锁私钥; 

  • pkey(PKey类型):私钥方式用于身份验证;

  • key_filename(str or list(str)类型):一个文件名或文件名的列 表,用于私钥的身份验证; 

  • timeout(float类型):一个可选的超时时间(以秒为单位)的 TCP连接; 

  • allow_agent(bool类型):设置为False时用于禁用连接到SSH代 理; 

  • look_for_keys(bool类型):设置为False时用来禁用在~/.ssh中搜 索私钥文件; 

  • compress(bool类型),设置为True时打开压缩。

3 exec_command方法

远程命令执行方法,该命令的输入与输出流为标准输入 (stdin)、输出(stdout)、错误(stderr)的Python文件对象,方法定 义:

exec_command(self, command, bufsize=-1)

参数说明: 

  • command(str类型):执行的命令串; 

  • bufsize(int类型):文件缓冲区大小,默认为–1(不限制)。

4 load_system_host_keys方法

加载本地公钥校验文件,默认为~/.ssh/known_hosts,非默认路径需要手工指定,方法定义

load_system_host_keys(self, filename=None)

参数说明: 

filename(str类型):指定远程主机公钥文件。

5 set_missing_host_key_policy方法

  • 设置连接的远程主机没有本地主机密钥或HostKeys对象时的策 略,目前支持三种,分别是AutoAddPolicy、RejectPolicy(默认)、 WarningPolicy,仅限用于SSHClient类,分别代表的含义如下: AutoAddPolicy,自动添加主机名及主机密钥到本地HostKeys对 象,并将其保存,不依赖load_system_host_keys()的配置,即使 ~/.ssh/known_hosts不存在也不产生影响; 

  • RejectPolicy,自动拒绝未知的主机名和密钥,依赖 load_system_host_keys()的配置; 

  • WarningPolicy,用于记录一个未知的主机密钥的Python警告,并接受它,功能上与AutoAddPolicy相似,但未知主机会有告警。

使用方法如下:

ssh=paramiko.SSHClient() 
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

二 SFTPClient类

SFTPClient作为一个SFTP客户端对象,根据SSH传输协议的sftp会话,实现远程文件操作,比如文件上传、下载、权限、状态等操作,下面介绍SFTPClient类的常用方法。

1 from_transport方法

创建一个已连通的SFTP客户端通道,方法定义:

from_transport(cls, t)

参数说明:

t(Transport),一个已通过验证的传输对象。

例子说明:

t = paramiko.Transport(("192.168.1.22",22)) 
t.connect(username="root", password="KJSdj348g") 
sftp =paramiko.SFTPClient.from_transport(t)

2 put方法

上传本地文件到远程SFTP服务端,方法定义:

put(self, localpath, remotepath, callback=None, confirm=True)

参数说明:

  • localpath(str类型),需上传的本地文件(源); 
  • remotepath(str类型),远程路径(目标); 
  • callback(function(int,int)),获取已接收的字节数及总传输 字节数,以便回调函数调用,默认为None; 
  • confirm(bool类型),文件上传完毕后是否调用stat()方法,以 便确认文件的大小。

例子:

localpath='/home/access.log' 
remotepath='/data/logs/access.log' 
sftp.put(localpath,remotepath)

3 get方法

从远程SFTP服务端下载文件到本地,方法定义:

get(self, remotepath, localpath, callback=None)

参数说明: 

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

例子说明:

remotepath='/data/logs/access.log' 
localpath='/home/access.log' 
sftp.get(remotepath, localpath)

4.其他方法

SFTPClient类其他常用方法说明:

  • Mkdir:在SFTP服务器端创建目录,如 sftp.mkdir("/home/userdir",0755)。 

  • remove:删除SFTP服务器端指定目录,如 sftp.remove("/home/userdir")。 

  • rename:重命名SFTP服务器端文件或目录,如 sftp.rename("/home/test.sh","/home/testfile.sh")。 

  • stat:获取远程SFTP服务器端指定文件信息,如 sftp.stat("/home/testfile.sh")。 

  • listdir:获取远程SFTP服务器端指定目录列表,以Python的列表 (List)形式返回,如sftp.listdir("/home")。

猜你喜欢

转载自blog.csdn.net/chengqiuming/article/details/87951117