在Python中scp文件的最pythonic方式是什么?我知道的唯一路线是
os.system('scp "%s" "%s:%s"' % (localfile, remotehost, remotefile) )
这是一种hack,并且无法在类似Linux的系统之外运行,并且需要Pexpect模块的帮助来避免出现密码提示,除非您已经为远程主机设置了无密码的SSH。
我知道Twisted的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')
scp
调用scp
仅在* nix上有效的命令行。