paramiko模块是基于Python实现的ssh远程安全链接,实现命令远程、文件传输、SSH代理等功能。本文详细介绍了paramiko模块常用的方法,且实用价值非常高,稍作修改就能做出一个实用的运维工具。
安装
letong@me:~$ sudo pip install paramiko
简单的远程执行命令实例
#!/usr/bin/env python import paramiko hostname='127.0.0.1' username='root' password='123456' port=2222 ssh=paramiko.SSHClient() ssh.load_system_host_keys() ssh.connect(hostname=hostname,port=port,username=username,password=password) stdin,stdout,stderr=ssh.exec_command('ls /') print stdout.read() ssh.close()
SSHClient类
SSHClient类是SSH服务会话的高级表示,封装了传输、通道以及SFTPClient的校验、建立方法,通常用于执行命令。
connect方法
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,连接目标的主机地址 port,连接目标的端口,默认22 username,用户名 password,用户密码 pkey,私钥方式用户验证 key_filename,私钥文件名 timeout,超时时间 allow_agent,是否允许ssh代理 look_for_keys,是否允许搜索私钥文件 compress,打开时是否压缩
exec_command方法
exec_command(self, command, bufzise=-1)
参数说明:
command,执行的命令 bufsize,文件缓冲区大小,-1不限制
load_system_host_keys方法
load_system_host_keys(self, filename=None)
参数说明:
filename,指定远程主机公钥文件
set_missing_host_key_policy方法
ssh=paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
参数说明:
AutoAddPolicy,自动添加主机名及密钥到本地并保存,不依赖load_system_host_keys()配置 RejectPolicy,自动拒绝未知主机名和密钥,依赖load_system_host_keys()配置 WarnningPolicy,功能与AutoAddPolicy相同,但是未知主机会报警
SFTPClient类
根据SSH传输协议的sftp会话,实现远程文件上传、下载等操作。
from_transport方法
from_transport(cls, t)
参数说明:
t,一个已通过验证的传输对象
例:
>>> import paramiko >>> a = paramiko.Transport((“127.0.0.1″,2222)) >>> a.connect(username=”root”, password=’123456′) >>> sftp = paramiko.SFTPClient.from_transport(a)
put方法
put(self, localpath, remotepath, callback=None, confirm=True)
参数说明:
localpath,上传源文件的本地路径 remotepath,目标路径 callback,获取接收与总传输字节数 confirm,上传完毕后是否调用stat()方法,以便确认文件大小
例:
>>> localpath=’ftp-test.log’ >>> remotepath=’/data/ftp-test.log’ >>> sftp.put(localpath,remotepath)
get方法
get(self, remotepath, localpath, callback=None)
参数说明:
remotepath,需要下载的远程文件 localpath,本地存储路径 callback,同put方法
其他方法
mkdir,用于创建目录 remove,删除目录 rename,重命名 stat,获取文件信息 listdir,获取目录列表
本文暂时没有评论,来添加一个吧(●'◡'●)