web-dev-qa-db-ja.com

Paramikoを使用してPython)のワイルドカードに一致するSFTPサーバー上のファイルを一覧表示します

_import paramiko

client = paramiko.SSHClient()
client.set_missing_Host_key_policy(paramiko.AutoAddPolicy())
client.connect('hostname', username='test1234', password='test')
path = ['/home/test/*.txt', '/home/test1/*.file', '/home/check/*.xml']
for i in path:

    for j in glob.glob(i):

        print j

client.close()
_

_glob.glob_を使用して、リモートサーバー上のワイルドカードファイルを一覧表示しようとしています。しかし、glob.glob()は機能していません。

Python 2.6を使用します。

リモートサーバーには、次のファイルが含まれています:_/home/test1/check.file_、_/home/test1/validate.file_、_/home/test1/vali.file_

誰かがこの問題について助けてくれますか?.

5
Vijay

globは、以前にSSHClientをインスタンス化したことがあるという理由だけで、魔法のようにリモートサーバーでの作業を開始することはありません。

SFTPClient.listdir :のように、ParamikoAPIを使用してファイルを一覧表示する必要があります。

import fnmatch

sftp = client.open_sftp()

for filename in sftp.listdir('/home/test'):
    if fnmatch.fnmatch(filename, "*.txt"):
        print filename

補足:AutoAddPolicyは使用しないでください。そうすることでセキュリティが失われます。 Paramiko "Unknown Server"を参照してください。

2
Martin Prikryl

または、paramikoラッパーである pysftp を使用して、次のように記述します。

import pysftp


def store_files_name(fname):
    pass


def store_dir_name(dir_name):
    pass


def store_other_file_type(other_file):
    pass

with pysftp.Connection('server', username='user', password='pass') as sftp:
    sftp.walktree('.', store_files_name, store_dir_name, store_other_file_type)
0
watbywbarif