Как я могу получить все .log и .txt файлы, когда я SSH на сервер - PullRequest
3 голосов
/ 14 июля 2011

Я использую модуль Paramiko для входа на сервер (ssh на некоторых и sftp на других). Я могу получить текст и файлы журнала из определенных папок на сервере без проблем. Но есть много подкаталогов, которые имеют файлы .txt и .log. Я читал где-то, что метод get не будет принимать (* .txt). Кто-нибудь знает способ обойти это? Вот код, который я сейчас использую для входа на сервер и получения определенного журнала:

 import paramiko
 import sys
 import os





 ssh = paramiko.SSHClient()
 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
 ssh.connect('10.5.48.74', username='root', password='******')

 ftp = ssh.open_sftp()
 ftp.get('/var/opt/crindbios/log/crindbios.log', '.')
 ftp.close()

1 Ответ

7 голосов
/ 14 июля 2011

Получить список файлов с помощью следующего скрипта.Затем выполните итерацию по списку с помощью ftp.get

import paramiko
import os

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('localhost',username='****')  

apath = '/var/log'
apattern = '"*.log"'
rawcommand = 'find {path} -name {pattern}'
command = rawcommand.format(path=apath, pattern=apattern)
stdin, stdout, stderr = ssh.exec_command(command)
filelist = stdout.read().splitlines()

ftp = ssh.open_sftp()
for afile in filelist:
    (head, filename) = os.path.split(afile)
    print(filename)
    ftp.get(afile, './'+filename)
ftp.close()
ssh.close()

. Это то, что предложил dustyprogrammer: На удаленном сервере вы применяете команды оболочки для получения списка файлов.Затем вы обрабатываете список с помощью Python.

Чтобы загрузить, вы должны создать новый путь к файлу для каждого файла - загрузка в каталог, как вы предложили, не работает (для меня).

...