Question Traitement log file

Plus d'informations
il y a 15 ans 9 mois #2397 par Frisco
Traitement log file a été créé par Frisco
Bonjour tout le monde,

Ouhh ca fait longtemps que je ne suis pas passé sur ce forum, j'espère que tout le monde vas bien ?

bon j'ai besoin de votre aide .. encore ...

J'ai un fichier .log (fichier text en gros) dans lequel j'aimerai ne garder que quelques lignes.

En fait je fais une recherche dans le fichier et quand je trouve la date du jour il doit sauvegarder le reste du fichier (a partir de la date du jour) dans un variable.

J'arrive a le faire sauvegarder toutes les lignes ou la date apparait mais il y a des lignes ou il n'y a pas de date.

Exemple de log:

[code:1]87 2008-06-09 02:20:23+02:00 ServeurX F-Secure Anti-Virus 1.3.6.1.4.1.2213.12
Virus definition database(s) base213c.avc base214c.avc daily.avc dailyc.avc fa.avc orion.dat avp.set updated successfully.
88 2008-06-09 10:20:24+02:00 ServeurX F-Secure Anti-Virus 1.3.6.1.4.1.2213.12
Virus definition database(s) dailyc.avc orion.dat updated successfully.
89 2008-06-09 12:20:24+02:00 ServeurX F-Secure Anti-Virus 1.3.6.1.4.1.2213.12
Virus definition database(s) orion.dat updated successfully.
90 2008-06-09 14:20:24+02:00 ServeurX F-Secure Anti-Virus 1.3.6.1.4.1.2213.12
Virus definition database(s) daily.avc dailyc.avc fa001.avc orion.dat updated successfully.
[/code:1]

Quelqu'un aurait un idée ?

D'avance merci

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 15 ans 9 mois #2398 par Arnaud Petitjean
Réponse de Arnaud Petitjean sur le sujet Re:Traitement log file
Bonjour Frico,

Oui ça va bien je te remercie :)

Pourrais tu nous montrer un extrait de ton fichier où les dates n'apparaissent pas ?

Arnaud

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 15 ans 9 mois #2401 par Frisco
Réponse de Frisco sur le sujet Re:Traitement log file
En faite ce n'est qu'un fichier et chaque jour des lignes supplémentaires viennent s'ajoutées et j'ai juste besoin de récupérer la fin du fichiers a partir de la date du jour pour m'envoyer le résultat par mail.

Voici la fin du fichier avec plusieurs date:

[code:1]81 2008-06-06 16:20:02+02:00 pServeurX F-Secure Anti-Virus 1.3.6.1.4.1.2213.12
Virus definition database(s) ca001.avc dailyc.avc orion.dat updated successfully.
82 2008-06-06 18:20:02+02:00 ServeurX F-Secure Anti-Virus 1.3.6.1.4.1.2213.12
Virus definition database(s) daily.avc dailyc.avc orion.dat updated successfully.
83 2008-06-07 16:20:13+02:00 ServeurX F-Secure Anti-Virus 1.3.6.1.4.1.2213.12
Virus definition database(s) base164.avc base211c.avc base212c.avc daily.avc dailyc.avc fa.avc fa001.avc gen005.avc orion.dat unp015.avc unp041.avc avp.set updated successfully.
84 2008-06-08 06:20:17+02:00 ServeurX F-Secure Anti-Virus 1.3.6.1.4.1.2213.12
Virus definition database(s) base164.avc base212c.avc base213c.avc daily.avc dailyc.avc fa.avc fa001.avc gen005.avc orion.dat unp018.avc unp039.avc unp041.avc avp.set updated successfully.
85 2008-06-08 14:20:18+02:00 ServeurX F-Secure Anti-Virus 1.3.6.1.4.1.2213.12
Virus definition database(s) orion.dat updated successfully.
86 2008-06-08 22:20:20+02:00 ServeurX F-Secure Anti-Virus 1.3.6.1.4.1.2213.12
Virus definition database(s) daily.avc dailyc.avc fa001.avc orion.dat updated successfully.
87 2008-06-09 02:20:23+02:00 ServeurX F-Secure Anti-Virus 1.3.6.1.4.1.2213.12
Virus definition database(s) base213c.avc base214c.avc daily.avc dailyc.avc fa.avc orion.dat avp.set updated successfully.
88 2008-06-09 10:20:24+02:00 ServeurX F-Secure Anti-Virus 1.3.6.1.4.1.2213.12
Virus definition database(s) dailyc.avc orion.dat updated successfully.
89 2008-06-09 12:20:24+02:00 ServeurX F-Secure Anti-Virus 1.3.6.1.4.1.2213.12
Virus definition database(s) orion.dat updated successfully.
90 2008-06-09 14:20:24+02:00 ServeurX F-Secure Anti-Virus 1.3.6.1.4.1.2213.12
Virus definition database(s) daily.avc dailyc.avc fa001.avc orion.dat updated successfully.
91 2008-06-09 18:20:24+02:00 ServeurX F-Secure Anti-Virus 1.3.6.1.4.1.2213.12
Virus definition database(s) dailyc.avc fa001.avc fsscript.def orion.dat updated successfully.
92 2008-06-10 02:20:28+02:00 ServeurX F-Secure Anti-Virus 1.3.6.1.4.1.2213.12
Virus definition database(s) base214c.avc base215c.avc base216c.avc base999.avc daily.avc dailyc.avc fa.avc fa001.avc orion.dat avp.set updated successfully.[/code:1]

Donc par exemple ici, c'est parcourir le fichier et dès qu'il trouve la date du jour (2008-06-10) ben a partir de la et jusqu'a la fin du fichier tout soit stocké dans un variable pour pouvoir me l'envoyer par mail.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 15 ans 9 mois #2411 par Arnaud Petitjean
Réponse de Arnaud Petitjean sur le sujet Re:Traitement log file
Salut Frisco,

Bon j'ai tenté de faire travailler mes méninges, et voici un extrait de leur substantifique moelle... :laugh:

Mon script fait les choses suivantes : il analyse chaque ligne du fichier de log à la recherche de la date qu'on lui passe en paramètre. A chaque ligne passée en revue, on incrémente un compteur (qui nous sert d'index). Dès qu'on a trouvé une ligne qui contient la date, on quitte la boucle car ça ne sert à rien de continuer la recherche (à part à perdre du temps processeur).
Maintenant qu'on sait à quelle position (numéro de ligne) se trouvent les données intéressantes, on va retourner toutes les lignes restantes grâce à l'excellente gestion des tableaux dans PowerShell !
Exemple : [code:1]$tab[10..20][/code:1]
Nous retourne les éléments du tableaux (ou les lignes de logs, par exemple) de la position 10 à 20. Attention, les tableaux commencent leur numérotation à partir de l'indice zéro.

Voici le code :
[code:1]PARAM ($dateDebut='2050-01-01')

$i=0
$fichier = get-content c:\temp\file.log
foreach ($ligne in $fichier) # on recherche le numéro d'index de la ligne qui contient la date passée en paramètre
{
if ($ligne.contains($dateDebut))
{
break
}
$i++
}

if ($i -ne $fichier.length)
{
$fichier[$i..$fichier.length]
}[/code:1]

Le second test, fait en sorte de ne pas retourner de résultats si la recherche a été infructueuse. Dans ce cas notre numéro d'index se trouve égal au nombre de lignes du fichier de log. C'est la raison pour laquelle nous testons l'inverse.

J'ai créé un paramètre (avec l'instruction PARAM) de façon à pouvoir donner en paramètre la date de notre choix. Je l'initialise à une valeur bidon au cas où l'on oublie de passer un paramètre; comme ça le script ne retourne aucun résultat. On aurait pu aussi l'initialiser avec un message d'erreur en disant \"Attention, paramètre obligatoire !\". On peut aussi l'initialiser avec la date du jour...

Pour lancer le script, il faudra faire :
[code:1]PS> ./derniersEvents.ps1 2008-06-10
92 2008-06-10 02:20:28+02:00 ServeurX F-Secure Anti-Virus 1.3.6.1.4.1.2213.12
Virus definition database(s) base214c.avc base215c.avc base216c.avc base999.avc daily.avc dailyc.avc fa.avc fa001.avc orion.dat avp.set updated successfully.
[/code:1]

Pour faire une recherche sur les logs du jour, il faut faire attention de bien formater la date :
[code:1]PS> .\lastevents2.ps1 $(get-date -format 'yyyy-MM-dd')[/code:1]

La gestion des dates est extremement bien faite aussi en PowerShell (merci au Framework .Net). Si tu as notre livre, page 185 tu trouveras un tableau qui te donne tous les formats de date possibles et imaginables.

Voilà, en espèrant que ça t'aide.:whistle:

Arnaud

Message édité par: Arnaud, à: 12/06/08 01:04<br><br>Message édité par: Arnaud, à: 12/06/08 01:07

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 15 ans 9 mois #2415 par Frisco
Réponse de Frisco sur le sujet Re:Traitement log file
Un super grand MERCI Arnaud.

C'est ce que je recherchais, merci.


Le petit hic c'est qu'il ne garde pas la structure du fichier quand je l'envoi par mail mais je vais chercher un peu.

Encore merci

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 15 ans 9 mois #2417 par Arnaud Petitjean
Réponse de Arnaud Petitjean sur le sujet Re:Traitement log file
Salut Frisco,

C'est un problème connu, ce sujet a déjà été traité dans le forum il y a quelque temps.

Bonne journée,

Arnaud

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.078 secondes
Propulsé par Kunena