paramiko是基于Python实现的SSH2远程安全连接,支持认证及密钥方式。可以实现远程命令执行、文件传输、中间SSH代理等功能,相对于Pexpect,封装的层次更高,更贴近SSH协议的功能
[root@lxcos]# pip install paramiko
两大核心组件
- SSHClient类
- SFTPClient类
SSHClient常用方法
connect方法
connect(hostname, port=22, username=None, password=None, pkey=None, key_filename=None, timeout=None, allow_agent=True, look_for_keys=True, compress=False, sock=None, gss_auth=False, gss_kex=False, gss_deleg_creds=True, gss_host=None, banner_timeout=None, auth_timeout=None, gss_trust_dns=True, passphrase=None)
参数说明:
exec_command方法
stdin,stdout,stderr = exec_command(command, bufsize=-1, timeout=None, get_pty=False, environment=None)
参数说明:
load_system_host_keys方法(加载本地公钥校验文件,默认为~/.ssh/known_host,非默认路径需要手工指定。)
load_system_host_keys(self,filename=None)
set_missing_host_policy方法(设置连接的远程主机没有主机密钥或HostKeys对象时的策略,目前支持三种,分别是AutoAddPolicy、RejectPolicy(默认)、WarningPolicy,仅限用于SSHClient类。)
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
参数说明
SFTPClient类常用方法
实例从远程下载文件到本地
#!/usr/bin/pythonimport paramikot = paramiko.Transport(("某IP地址",22))t.connect(username = "用户名", password = "口令")sftp = paramiko.SFTPClient.from_transport(t)remotepath='/tmp/test.txt'localpath='/tmp/test.txt'sftp.get(remotepath, localpath) #上传文件和下载差别只有get/put和本地与远程文件的路径不同t.close()
上传文件到远程
#!/usr/bin/pythonimport paramikot = paramiko.Transport(("某IP地址",22))t.connect(username = "用户名", password = "口令")sftp = paramiko.SFTPClient.from_transport(t)remotepath='/tmp/test.txt'localpath='/tmp/test.txt'sftp.put(localpath, remotepath)t.close()
执行远程命令
#!/usr/bin/pythonimport paramikos = paramiko.SSHClient()s.set_missing_host_key_policy(paramiko.AutoAddPolicy())s.connect("某IP地址",22,"用户名", "密码")stdin, stdout, stderr = s.exec_command("你的命令")if stderr:print stderr.read()else:print stdout.readlines()s.close()