paramikoとsftpクライアントを使用して最後の行のログファイルをポーリングします。私は、Pythonでsshtailモジュールを認識していますが、それを使用することは、現在のコーディング標準に反しています。Paramiko - ログファイルの最後の行を取得するためにsftpクライアントを使用
これまで私はこれを使用していましたが、今はログファイルの最後の行を読む方法を知りましたか?それはより速く、ちょうどシェル経由でリモートからファイルにtail -n1
を呼び出し、その標準出力を読みやすくすることができ
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")
ファイルがリモートサーバーにあると仮定していますか?これまでに何を試しましたか? – Ben
これは、Ubuntu 11.10を実行しているリモートのLinuxサーバ上にあります。私はちょうどsshtailモジュールをファイルの末尾に使用しました。私はブランクでないログしか期待してはいけません。私がそれを得ると、私はそれを保存し、それを解析します。 – Parth
私はあなたが問題を解決しようとしている投稿するコードはありますか?コードを尋ねるのではなく、最初にいくつかの試みをすることが期待されています。[ask] – Ben