Копия Paramiko SCP с регулярного выражения удаленной машины - PullRequest
0 голосов
/ 15 октября 2018

Есть ли способ, которым я могу скопировать удаленные файлы с именем «output», используя paramiko scp.

У меня есть код ниже, который копируется, только если я предоставляю полный путь или точное имя файла

Ниже приведен код

 import paramiko
 import os
 from paramiko import SSHClient
 from scp import SCPClient


def createSSHClient(self, server):
    client = paramiko.SSHClient()
    client.load_system_host_keys()
    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    client.connect(server, self.port, self.user, self.password)
    return client

  def get_copy(self, hostname, dst):
    ssh = self.createSSHClient(hostname)
    scp = SCPClient(ssh.get_transport())
    scp.get(dst)
    scp.close()

Я пытаюсь

     get_copy(1.1.1.1, "*output")

Я получаю файл не найден Ошибка

Ответы [ 2 ]

0 голосов
/ 25 апреля 2019

Есть еще два способа, которые я нашел полезными в этом контексте.

1) Вы также можете сделать это без использования SCPClient, но только с самим Paramiko.Как -

def get_copy(self, hostname, dst):
    ssh = createSSHClient(hostname)
    sftp = ssh.open_sftp()
    serverfilelist = sftp.listdir(remote_path)
    for f in serverfilelist:
            if re.search("*output", f):
                sftp.get(os.path.join(remote_path, f), local_path)

    ssh.close()

2) Если вы хотите использовать SCPClient для файлов SCP с использованием регулярных выражений (подстановочные знаки), я думаю, ссылка ЭТА будет полезна.

0 голосов
/ 15 октября 2018

Возможно, сначала нужно использовать ssh, чтобы получить список, а затем просмотреть их по одному.

Примерно так, просто к сведению.

def get_copy(self, hostname, dst):
    ssh = createSSHClient(hostname)

    stdin, stdout, stderr = ssh.exec_command('ls /home/username/*output')
    result = stdout.read().split()

    scp = SCPClient(ssh.get_transport())
    for per_result in result:
        scp.get(per_result)
    scp.close()
    ssh.close()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...