Вывести список файлов на SFTP-сервере, соответствующих шаблону в Python, используя Paramiko

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

Может кто-нибудь, пожалуйста, помогите по этому вопросу.

1 ответ

Решение

glob не будет магическим образом работать с удаленным сервером, просто потому, что вы создали SSHClient до.

Вы должны использовать Paramiko API для просмотра файлов, например SFTPClient.listdir:

sftp = client.open_sftp()

for filename in sftp.listdir('/home/test'):
    if filename.endswith('.txt'):
        print filename

Примечание: не использовать AutoAddPolicy , Вы теряете безопасность, делая это. Смотрите Paramiko "Неизвестный сервер".

Или используйте pysftp, который является оболочкой paramiko, и напишите что-то вроде этого:

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)
Другие вопросы по тегам