[PYTHON] Protokollüberwachungsskript

Linux hat einen praktischen Befehl namens tail -f. Ich habe heute erfahren, dass es so etwas wie os.stat gibt, also habe ich eine kleine Quelle geschrieben. Ich versuche, die vom Argument übergebene Datei zu überwachen. Dies wird nur realisiert, indem Sie zum Ende der Datei gehen, die aktuelle Position des Dateizeigers abrufen und die Daten aus der Datei lesen.

sample.py


#-*- coding: utf-8 -*-
import time
import os
import sys
from stat import *

def usage():
	print "Usage: # python %s filename" % argv[0]
	quit()


def init(filename):
	file = open(filename,'r')

	#Gehen Sie zum Ende der Datei
	st_results = os.stat(filename)
	st_size = st_results[ST_SIZE]
	file.seek(st_size)

	return file

def tail_f(file, usec):
	msec = usec / 1000
	while 1:
		fpos = file.tell()
		line = file.readline()
		if not line:
			time.sleep(msec)
			file.seek(fpos)
		else:
			print line,
	#Nicht erreicht
	file.close()
	pass

if __name__ == '__main__':
	argv  = sys.argv
	argc  = len(argv)
	if( argc != 2 ):
		usage()

	filename = argv[1]
	file = init(filename)
	tail_f(file, 500)

Übrigens, wenn Sie es nur unter Linux verwenden, können Sie es zu einem Wrapper-Skript für tail -f machen.

sample.py


import sys
import os

if __name__ == '__main__':
	argv = sys.argv
	argc = len(argv)

	if argc != 2:
		print "test",
		quit()
	
	filename = argv[1]
	os.system('tail -f ' + filename )

Recommended Posts

Protokollüberwachungsskript
[Linux] Protokollüberwachung
Shell zur Überwachung von Protokollnachrichten
[Python] Kopierskript zum Generieren eines Kopierprotokolls
Anfänger: Hinzufügen eines Überwachungshostskripts für Nagios
Python-Protokoll ausgeben