2017-12-21 446 views
0

Pythonスクリプトを使用してリモートマシンからローカルマシンにファイルをコピーしたいとします。私はファイル名の拡張子を知っているだけなので、ファイル名を表現するためにワイルドカードを使用したい。 using wildcards in filename in scp in pythonPythonのSCPClientライブラリを使用してファイル名にワイルドカードを使用する

というタイトルの質問で提案されているように

はまた、私は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:いいえ。/ルート/ * PY:そのようなファイルやシェルからの実行ディレクトリ

のscp [email protected]だけで正常に動作します。

答えて

1

あなたのget_transport()にサニタイズを追加する必要があります。

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

そうでない場合は、ワイルドカードは文字通り扱われます。

+0

ありがとうございました。できます –

関連する問題