使用Python的SCPClient库在文件名中使用通配符

问题描述 投票:1回答:1

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

另外,我想在标题为using wildcards in filename in scp in python的问题中建议直接使用SCPClient Python库而不是os.system。

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

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 [email protected]:/ root / * .py。

python ssh paramiko scp
1个回答
2
投票

你需要为你的get_transport()添加消毒:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.