我想使用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。
答案 0 :(得分:2)
您需要为get_transport()
添加清理:
with SCPClient(ssh.get_transport(), sanitize=lambda x: x) as scp:
scp.get(remote_path='/root/*.py', local_path='.')
否则,字面上会对通配符进行处理。