Traitement log alarmes perl
pomme2reinette
Messages postés
1
Date d'inscription
Statut
Membre
Dernière intervention
-
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je suis en train d'investiguer des alarmes (je suis dans les télécoms) sur des antennes relais. Je souhaite investiguer sur le statut des antennes relais . Le problème c'est que j'ai un log d'alarme pour chaque antenne. Donc il me faut concaténer les fichiers log de toutes les antennes et traiter le fichier final de façon a avoir en sortie un fichier avec :
Nom de l'antenne relais;status
AntenneA;disabled
AntenneB;enabled
AntenneC;disabled
.
.
Les fichier logs se présentent ainsi
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
>Status (Disabled)
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
Le nom du fichier correspond au nom de l'antenne mais n'est pas présent à l'interieur du log. Donc il me faudrait ouvrir chacun des fichiers logs, récupérer le nom de l'antenne (nom du fichier log),et récupérer le status ...qui est toujours entre parenthèse.
Bon j'ai passé la soirée à regarder les tutoriels mais partant des profondeurs abyssales en matière de programmation perl je suis juste à peu près capable de comprendre des codes simples. J'ai beaucoup de mal à coder...je me perds avec tous ces symbole $%#
Si vous avez une minute, pourriez vous m'aiguiller svp ? Quelqun aurait un exemple de code à me proposer svp ?
merci grandement
Je suis en train d'investiguer des alarmes (je suis dans les télécoms) sur des antennes relais. Je souhaite investiguer sur le statut des antennes relais . Le problème c'est que j'ai un log d'alarme pour chaque antenne. Donc il me faut concaténer les fichiers log de toutes les antennes et traiter le fichier final de façon a avoir en sortie un fichier avec :
Nom de l'antenne relais;status
AntenneA;disabled
AntenneB;enabled
AntenneC;disabled
.
.
Les fichier logs se présentent ainsi
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
>Status (Disabled)
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
Le nom du fichier correspond au nom de l'antenne mais n'est pas présent à l'interieur du log. Donc il me faudrait ouvrir chacun des fichiers logs, récupérer le nom de l'antenne (nom du fichier log),et récupérer le status ...qui est toujours entre parenthèse.
Bon j'ai passé la soirée à regarder les tutoriels mais partant des profondeurs abyssales en matière de programmation perl je suis juste à peu près capable de comprendre des codes simples. J'ai beaucoup de mal à coder...je me perds avec tous ces symbole $%#
Si vous avez une minute, pourriez vous m'aiguiller svp ? Quelqun aurait un exemple de code à me proposer svp ?
merci grandement
A voir également:
- Traitement log alarmes perl
- Reconsidérer le traitement de vos informations à des fins publicitaires - Accueil - Réseaux sociaux
- Traitement de texte gratuit - Guide
- Ce traitement de texte gratuit et léger est parfait pour remplacer Word, même sur un vieux PC - Guide
- Traitement de texte gratuit open office - Télécharger - Suite bureautique
- Dictionnaire des maladies et traitement - Télécharger - Bureautique
1 réponse
Salut pomme2reinette,
Si tous les fichiers logs AntenneA, AntenneB, sont dans le même répertoire, quelque chose comme cela devrait fonctionner :
L'opérateur
https://perldoc.perl.org/perlfaq4#How-can-I-tell-whether-a-certain-element-is-contained-in-a-list-or-array%3f
Dal
Si tous les fichiers logs AntenneA, AntenneB, sont dans le même répertoire, quelque chose comme cela devrait fonctionner :
#!/usr/bin/perl use strict; use warnings; my $dir = '/chemin/vers/mon/repertoire'; opendir(DIR, $dir) or die $!; while (my $fic_log = readdir(DIR)) { if ($fic_log =~ /Antenne.*$/) { open (LIRE_LOG, '<', $fic_log) or die "Impossible d'accéder au fichier $fic_log"; my @log_data = <LIRE_LOG>; close(LIRE_LOG); if (/>Status\s\((.*?)\)/ ~~ @log_data) { print "$fic_log;$1\n"; } else { print "Erreur : le fichier log $fic_log " . "ne contient pas de ligne 'Status'\n"; exit; } } } closedir(DIR);
L'opérateur
~~permettant de matcher dans un array est disponible à partir de Perl 5.10
https://perldoc.perl.org/perlfaq4#How-can-I-tell-whether-a-certain-element-is-contained-in-a-list-or-array%3f
Dal