Script de surveillance du journal

linux a une commande pratique appelée tail -f. J'ai appris aujourd'hui qu'il existe quelque chose qui s'appelle os.stat, alors j'ai écrit une petite source. J'essaye de surveiller le fichier passé de l'argument. Il est réalisé uniquement en se déplaçant à la fin du fichier, en obtenant la position actuelle du pointeur de fichier et en lisant les données du fichier.

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')

	#Aller à la fin du fichier
	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,
	#Non atteint
	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)

Au fait, si vous ne l'utilisez que sous Linux, vous pouvez en faire un script wrapper pour tail -f.

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

Script de surveillance du journal
[Linux] Surveillance des journaux
Shell de surveillance des messages de journal
[python] Script de copie pour générer un journal de copie
Débutant: ajouter un script hôte de surveillance pour les nagios
Sortie du journal python