Paramiko - клиент sftp, используемый для получения последней строки файла журнала - PullRequest
1 голос
/ 25 марта 2012

Я бы хотел использовать paramiko и клиент sftp для опроса файла журнала для последней строки.Я знаю о модуле sshtail в python, но его использование идет вразрез со стандартами кодирования, в которых я сейчас нахожусь.

Ранее я использовал это, и теперь мне интересно, как перейти к чтению последней строкифайл журнала?

Спасибо,

Parth

EDIT2:

try: 
    self.logger.info("SSH Log: trying to connect to: " + self.ssh_server_ip + "," + str(self.ssh_port) + "," + self.ssh_username + "," + self.ssh_password) 
    client = paramiko.SSHClient()
    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    client.connect(self.ssh_server_ip, self.log_server_port, self.ssh_username, self.ssh_password)
    self.logger.info("SSH LOG: Deleting files from HTTP Upload Server")
    sftp = client.open_sftp()
    remote_command = "tail -n1 /var/log/apache2/access.log"
    stdin, stdout, stderr = client.exec_command(remote_command)
    last_line = stdout.read()
    old_line = last_line
    while 1:
        remote_command = "tail -n1 /var/log/apache2/access.log"
        stdin, stdout, stderr = client.exec_command(remote_command)
        last_line = stdout.read()
        if last_line != old_line:
            finish_line = last_line
            break
    self.logger.info("SSH Log: closing connection")
    sftp.close()
    client.close()
    except Exception, e:
        self.logger.error(str(e))
        self.logger.error("Failed to delete file on HTTP server: " + str(e))
    except:
        self.logger.error("Failed to delete file on HTTP server")

1 Ответ

2 голосов
/ 26 марта 2012

Быстрее и проще просто вызвать tail -n1 для файла через оболочку и прочитать его стандартный вывод.Что-то вроде:

remote_command = "tail -n1 /var/log/apache2/access.log"
stdin, stdout, stderr = client.exec_command(remote_command)
last_line = stdout.read()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...