在 Python 中 scp 文件的最 Pythonic 方式是什么?我知道的唯一路线是
os.system('scp "%s" "%s:%s"' % (localfile, remotehost, remotefile) )
这是一种 hack,在类 Linux 系统之外无法使用,并且需要 Pexpect 模块的帮助以避免密码提示,除非您已经为远程主机设置了无密码 SSH。
我知道 Twisted's conch
,但我宁愿避免自己通过低级 ssh 模块实现 scp 。
我知道paramiko
,一个支持 SSH 和 SFTP 的 Python 模块;但它不支持SCP。
背景:我连接到一个不支持 SFTP 但支持 SSH/SCP 的路由器,所以 SFTP 不是一个选项。
编辑:这是如何使用 SCP 或 SSH 将文件复制到 Python 中的远程服务器的副本?. 但是,该问题并没有给出处理 Python 中键的特定于 scp 的答案。我希望有一种方法来运行类似的代码
import scp
client = scp.Client(host=host, user=user, keyfile=keyfile)
# or
client = scp.Client(host=host, user=user)
client.use_system_keys()
# or
client = scp.Client(host=host, user=user, password=password)
# and then
client.transfer('/etc/local/filename', '/etc/remote/filename')