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。
一.安装
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。
相关文章推荐
- Python动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- install and upgrade scrapy
- Scrapy的架构介绍
- Centos6 编译安装Python
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- Python中zip()函数用法举例
- Python中map()函数浅析
- Python将excel导入到mysql中
- Python在CAM软件Genesis2000中的应用
- 使用Shiboken为C++和Qt库创建Python绑定
- FREEBASIC 编译可被python调用的dll函数示例
- Python 七步捉虫法