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