如何在python scp?

问题:

什么是最Python的方式来Python中的文件?我唯一知道的路线是

os.system('scp "%s" "%s:%s"' % (localfile, remotehost, remotefile) )

这是一个黑客,并且在类似linux的系统之外不起作用,除了您已经对远程主机设置了无密码SSH,哪些需要Pexpect模块的帮助以避免密码提示。
我知道Twisted的conch,但我宁愿避免通过低级别的ssh模块实现自己的scp。
我知道paramiko,一个支持ssh和sftp的Python模块;但它不支持scp。
背景:我连接到不支持sftp但是支持ssh / scp的路由器,所以sftp不是一个选项。
 编辑
这是How to copy a file to a remote server in Python using SCP or SSH?的重复。 然而,那个问题并没有给出一个处理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')

回答:

尝试模块paramiko_scp。这很容易使用。请参见以下示例:

def createSSHClient(server, port, user, password):
    client = paramiko.SSHClient()
    client.load_system_host_keys()
    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    client.connect(server, port, user, password)
    return client

ssh = createSSHClient(server, port, user, password)
scp = SCPClient(ssh.get_transport())

然后调用scp.get()或scp.put()来执行scp操作。
 SCPClient code

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: How to scp in python?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

3 + 7 =