Как проверить сгенерированные удаленные файлы на соответствие стандартному набору файлов и каталогов?

Каталог, содержащий набор файлов, подкаталог и подкаталог, содержащий файлы, мне нужно проверить, действительно ли эти файлы генерируются в удаленном месте.

скажем, [a.log,b.log,c.log,tmp_folder] и tmp_folder содержат d.log,e.log файлов

В настоящее время я вхожу в удаленную машину и получаю список файлов, но я не могу сопоставить их, а также не могу передать весь этот каталог по sftp на локальную машину.

remote_dir = "some/location/path/time_stamp_10101010"
local_dir = "location/on/local/path"

Нужно скопировать весь этот каталог time_stamp_10101010 в local_path.

import re,os,sys
import paramiko


remote_dir = "some/location/path/time_stamp_10101010"
local_dir = "location/on/local/path" 

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(host_ip, username=username,key_filename=key_filename,port=22)
stdin, stdout, stderr = ssh.exec_command("ls")
sftp_client = ssh.open_sftp()
dir_items = sftp_client.listdir_attr(remote_dir)
for item in dir_items:
    print item
    if os.path.isfile(os.path.join(remote_dir, item)):
            remote_path = remote_dir + '/' + item.filename
            local_path = os.path.join(local_dir, item.filename)
            sftp_client.put_dir(remote_path, local_path)
    # If item is a directory here and if it contains sub-directory and files
    # How can I implement to copy recursively till all sub-directories and files are included.

Правильно ли я делаю? или есть ли лучший подход? Как проверить файлы, подкаталоги, сгенерированные в каталоге, соответствуют стандартному набору (как указано выше)? reg-ex было бы лучше, я чувствую.


person StackGuru    schedule 22.02.2019    source источник
comment
См. мой ответ на рекурсивную загрузку каталога с помощью Paramiko?.   -  person Martin Prikryl    schedule 22.02.2019


Ответы (1)


Вы можете использовать рекурсивную функцию следующим образом:

def recursive_walk(path, remote_directory="", local_directory=""):
    if os.path.isfile(path):
        print("I am a file take me anywhere", path)

        return
    for item in os.listdir(path):
        item_path = os.path.join(path, item)
        recursive_walk(item_path)


recursive_walk('.')
person Vitali Muladze    schedule 22.02.2019