这篇文章主要介绍了 Python 基于 sftp 及 rsa 密匙实现远程拷贝文件的方法, 结合实例形式分析了基于 RSA 秘钥远程登陆及文件操作的相关技巧, 需要的朋友可以参考下
Python 是一种面向对象、解释型计算机程序设计语言,由 Guido van Rossum 于 1989 年底发明,第一个公开发行版发行于 1991 年。Python 语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,它能够把用其他语言制作的各种模块(尤其是 C/C++)很轻松地联结在一起。
本文实例讲述了 Python 基于 sftp 及 rsa 密匙实现远程拷贝文件的方法。分享给大家供大家参考,具体如下:
如果两台服务器之间使用了 RSA 秘钥免密码登录的方式,可以先查找出 rsa 秘钥的对应目录 (如 find / -name id_rsa 或者 locate id_rsa),
接着通过 Python 中 paramiko 模块可以这样实现 scp 功能:
- def scp_by_key(host_ip, host_port, remote_path, local_path, username, pkey_path):
- try:
- key=paramiko.RSAKey.from_private_key_file(pkey_path)
- t = paramiko.Transport((host_ip, host_port))
- t.connect(username=username, pkey=key)
- sftp = paramiko.SFTPClient.from_transport(t)
- src = remote_path
- des = local_path
- sftp.get(src,des)
- t.close()
- except Exception as e:
- print e
我们可以这样使用该方法:
- scp_by_key('192.168.0.33', 22, '/xx/xxx/a.txt', 'xx/xxx/b.txt', 'xiaomo', '/home/xiaomo/.ssh/id_rsa')
用起来是不是很爽呢?不过前提是要有 rsa 密钥... 如果需要密码,则只需将 pkey 参数换为 password 传入即可:
- t = paramiko.Transport((host_ip, host_port))
- t.connect(username=username, password='xxx')
希望本文所述对大家 Python 程序设计有所帮助。
来源: http://www.phperz.com/article/17/0323/301512.html