script sh de fichier log

script sh de fichier log - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 30-08-2009 à 00:07:34    

Bonjour,
Je cherche à faire un script qui analyserait des fichiers logs pour ne récupérer pour le moment que les lignes qui m'intéressent.
 
Ce sont des logs du type :
[1243769124] HOST ALERT: serveur1;UP;HARD;1;PING OK - Packet loss = 0%, RTA = 4.35 m
[1243769176] SERVICE ALERT: serveur2;CPU Load;OK;HARD;1;OK - load average: 0.00, 0.00, 0.00
 
Pour le moment, je cherche à récupérer les lignes qui se situent dans un intervalle de temps donné ainsi que le noms des serveurs correspondant aux noms présent dans un fichier.
 
J'ai réussi à faire celà en faisant une première commande qui me récupère le nom des serveurs et qui m'enregistre le résultat dans un fichier texte et ensuite en analysant le temps de ce nouveau fichier.
 
Cette solution n'est pas viable pour moi, car je peux avoir plus de 20Go de fichiers logs à parcourir. Cette méthode peut poser à terme un problème de place et de performances.
Il faudrait que je n'ai à parcourir mon fichier log qu'une seule fois.
 
J'ai fait pour filtrer le temps :
awk /temps de début/,/temps de fin/' chemin de mon fichier log (a terme ce sera un fichier contenant le nom de tous mes fichiers logs à analyser)
 
Pour filtrer par serveurs :
egrep `sed ':a;N;$!ba;s/\n/\|/g' /tmp/serveurs.txt` chemin de mon fichier log
 
Je n'arrive pas à trouver une solution pour faire les deux en une seule fois.
 
Quelqu'un aurait une idée ?
Je vous remercie.

Reply

Marsh Posté le 30-08-2009 à 00:07:34   

Reply

Marsh Posté le 30-08-2009 à 12:31:11    

Euh... Un pipe tout bête.


---------------
La réponse est 42
Reply

Marsh Posté le 30-08-2009 à 12:34:44    

C'est pas bon. Déjà essayé.

Reply

Marsh Posté le 30-08-2009 à 13:53:40    

666Maverick a écrit :

C'est pas bon. Déjà essayé.


Et pourquoi donc  :heink:


---------------
La réponse est 42
Reply

Marsh Posté le 30-08-2009 à 14:27:05    

awk /temps de début/,/temps de fin/' chemin de mon fichier log | egrep `sed ':a;N;$!ba;s/\n/\|/g' /tmp/serveurs.txt` (avec ou sans le chemin du fichier log)
 
Il me retourne tous les logs de mon intervalle de temps. Il ne m'a pas pris en compte ma commande après le |


Message édité par 666Maverick le 30-08-2009 à 16:14:29
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed