Список каталогов Python Paramiko в SSH с несколькими переходами

Как я могу listdir в ситуации с несколькими переходами ssh? Или есть другой способ получить мой целевой файл?

def file_lookup():
    for file in os.listdir('/var/log/rsyslog/firewall-a/'):
        if fnmatch.fnmatch(file, 'syslog-'+date+'-\d{10}\.gz'):
            global log_file
            log_file = file

def copy_from_log_server_to_bastion():
    ssh_client = paramiko.SSHClient()
    ssh_client.load_host_keys('/home/vagrant/.ssh/known_hosts/')
    ssh_client.connect(bastion_ip, bastion_port, username, password)
    stdin, stdout, stderr = ssh_client.exec_command('scp ' + username + '@' + log_server_ip + ':' + logs_directory + log_file + ' ./')
    stdin.write(password)

def copy_from_bastion_to_local():
    # some codes here

Я хочу, чтобы мой скрипт копировал файл с удаленного сервера -> хост-бастион -> локальный, но у меня проблема с этим многоскачковым ssh.

Вот сетевое сопоставление: (https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2017/11/15/NM_diagram_061316_a1.png)

Извините, что у меня недостаточно репутации, чтобы добавить изображение в сообщение.


person Charlie    schedule 05.05.2019    source источник
comment
@MartinPrikryl вложенный ssh ​​- это не моя проблема, моя проблема в том, как я могу перечислить каталог под вложенным ssh ...   -  person Charlie    schedule 06.05.2019
comment
Если вложенный SSH не является вашей проблемой, покажите нам свой текущий код для вложенного SSH, и мы поможем вам составить список. Код, который вы опубликовали, не выполняет вложенных SSH.   -  person Martin Prikryl    schedule 06.05.2019


Ответы (1)


Я изменил свой код второй функции на это, третья функция не нужна, и теперь она работает:

def copy_from_log_server_to_local(log_client):
    os.mkdir('/vagrant/Logs/' + datetime.today().strftime('%m%d'))    
    scp_client = SCPClient(log_client.get_transport())
    scp_client.get('/var/log/rsyslog/firewall-a/'+log_file, '/vagrant/Logs/' + datetime.today().strftime('%m%d') + '/')
    scp_client.close()

log_client открыл канал с моим хостом-бастионом

person Charlie    schedule 11.05.2019