您的位置:首页 > 编程语言 > Python开发

paramiko

2015-11-12 16:51 429 查看
paramiko是基于Python实现的SSH2远程安全连接,支持认证及秘钥方式。可以实现远程命令执行、文件传输、之间SSH代理等功能,相对于pexpect,封装的层次更高,更贴近SSH协议的功能。

一.安装

1.pip install paramiko

2.easy_install paramiko

3.源码安装

yum -y install python-devel

wget http://ftp.dlitz.net/pub/dlitz/crypto/pycrypto-2.6.tar.gz
tar -zxvf pycrypto-2.6.tar.gz

cd pycrypto-2.6.

python setup.py install

cd ..

wget https://pypi.python.org/packages/source/e/eccdsa/ecdsa-0.10.tar.gz --no-check-certificate

tar -zxvf ecdsa-0.10.tar.gz

cd ecdsa-0.10

python setup.py install

cd ..

wget https://github.com/paramiko/paramiko/archive/v1.12.2.tar.gz
tar -zxvf archive/v1.12.2.tar.gz

cd archive/v1.12.2

python setup.py install

二.paramiko核心组件

1.SSHClient类

SSHClient类是SSH服务会话的高级表示,该类封装了传输、通道及SFTPClient的校验、建立的方法。

1)使用:

client = SSHClient()

client.load_system_host_keys()

client_connect('host')

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或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_hosts_keys(self, filename=None)

参数:

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

2.SFTPClient类

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

1)from_transport方法

创建一个已连通的SFTP客户端通道

方法定义:from_transport(cls, t)

参数:

t:一个已通过验证的传输对象;

2)put方法

上传本地文件到远程SFTP服务端

方法定义:put(self, localpath, remotepath, callback=None, confirm=True)

参数:

localpath(str类型):需上传的本地文件(源);

remotepath(str类型):远程路径(目标);

callback(function(int,int)):获取已接收的字节数及总传输字节数,以便回调函数调用,默认为None;

confirm(bool类型):文件上传完毕后是否调用stat()方法,以便确认文件的大小;

3)get方法

从远程SFTP服务端下载文件到本地

方法定义:get(self, remotepath, localpath, callback=None)

参数:

remotepath(str类型):需下载的远程文件(源);

localpath(str类型):本地路径(目标);

callback(function(int,int)):获取已接收的字节数及总传输字节数,以便回调函数调用,默认为None。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  paramiko Python