使用Python的SCPClient库

时间:2017-12-21 13:34:13

标签: python ssh paramiko scp

我想使用Python脚本将文件从远程计算机复制到本地计算机。我只知道文件名的扩展名,所以我想使用通配符来表示文件名。

此外,我想直接使用 SCPClient Python库而不是 os.system ,如标题为using wildcards in filename in scp in python

的问题所示

但是当我运行以下代码时:

from paramiko import SSHClient
import paramiko
from scp import SCPClient

with SSHClient() as ssh:
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect('10.10.100.5', username= 'root', password='Secret')
    with SCPClient(ssh.get_transport()) as scp:
        scp.get(remote_path='/root/*.py', local_path='.')

我得到了一个例外

  

scp.SCPException:scp:/root/*.py:没有这样的文件或目录

从shell运行正常

  

scp root@10.10.100.5:/ root / * .py。

1 个答案:

答案 0 :(得分:2)

您需要为get_transport()添加清理:

with SCPClient(ssh.get_transport(), sanitize=lambda x: x) as scp:
        scp.get(remote_path='/root/*.py', local_path='.')

否则,字面上会对通配符进行处理。