如果我们想要远程拷贝服务器上面的文件,或者对远程服务器进行相关操作的话,使用paramiko可以很好的解决以上问题。它仅需要在本地上安装相应的软件(python、PyCrypto、ecdsa),对远程服务器没有配置要求,对于连接多台服务器,进行复杂的连接操作特别有帮助。下面本文就来详细的介绍Python Paramiko模块的安装与使用,一起学习学习吧。
安装paramiko主要需要安装3个模块,分别是:ecdsa、paramiko、pycrypto。
在python3.6的环境下,经过调试成功之后的模块版本为:ecdsa 0.13;paramiko 1.18.4;pycrypto-2.6.1.tar.gz。
他们离线安装的地址如下:
ecdsa-0.13.tar.gz:
https://files.pythonhosted.org/packages/f9/e5/99ebb176e47f150ac115ffeda5fedb6a3dbb3c00c74a59fd84ddf12f5857/ecdsa-0.13.tar.gz
pycrypto-2.6.1.tar.gz:
https://ftp.dlitz.net/pub/dlitz/crypto/pycrypto/pycrypto-2.6.1.tar.gz
paramiko-1.18.4.zip:
https://codeload.github.com/paramiko/paramiko/zip/1.18.4
解压后分别进入目录,执行python setup.py build; python setuo.py install
(PS:按顺序安装,先ecdsa、再pycrypto、最后paramiko)
3.1 执行远程命令:
#!/usr/bin/python
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect("某IP地址",22,"用户名", "口令")
stdin, stdout, stderr = ssh.exec_command("你的命令")
print stdout.readlines()
ssh.close()
3.2 上传文件到远程:
#!/usr/bin/python
import paramiko
t = 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()
3.3 从远程下载文件:
#!/usr/bin/python
import paramiko
t = 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)
t.close()