Question
Compter le nombre fois le meme resultat ??
- rodriguez
- Auteur du sujet
- Hors Ligne
- Membre senior
-
- Messages : 61
- Remerciements reçus 0
noxydius écrit:
J'ai pourtant essayé de faire simpleje viens de regarder ton tuto que je connaissais déja, mais c'est bien encore trop compliqué pour moi a l'heure actuel.
, ensuite cela dépend d'où tu parts.
Qu'est-ce qui te poses problème dans ce tutoriel?
noxydius écrit:As-tu un exemple de contenu ?Je voudrais savoir si il existe une fonction qui tri par ordre alphabétique les entrées du tableau.?
J'ai un peu de mal à comprendre ton traitement
J'ai jamais bossé avec des tableaux, tous mes scripts etant pour l'instant basé sur des requetes de l'AD.
Le but du script est de lire le journal évènement sécurite de relever sur une periode de 1 jour.
tous les echec de mot de passe : event ID
pour le moment j'ai le resultat de la lecture des évenement dans un fichier.txt.
[code:1]
$intervalle = 1
#Remove-Item c:\systools\bat\event.txt
$logs = [System.Diagnostics.EventLog]::GetEventLogs('SMARS-NET01.fr.compass.local')
#logs[2] représent lors du get-eventlog -list la place du security sur ce poste de test, ceci peut varier celon le serveur.
$colItems = $logs[7].entries
$Now = Get-Date
$lastWrite = $Now.AddDays(-$intervalle)
#numero de l'event à chercher.
$events = 529
foreach ($item in $colItems){
if (( $events -contains $item.EventID ) -and ($item.TimeWritten -ge $lastWrite)){
#“Serveur incriminé : ” + $item.MachineName
”====================================================” >> c:\systools\bat\event.txt
“Event ID: ” + $item.EventID >> c:\systools\bat\event.txt
“Date de l'évènement: ” + $item.TimeWritten >> c:\systools\bat\event.txt
#“Categorie: ” + $item.Category
#“Type de l'entrée: ” + $item.EntryType
#“Nom utilisateur: ” + $item.UserName
#“Data: ” + $item.Data
#“Source: ” + $item.Source
#“Date de l'écriture de l'évènement: ” + $item.TimeGenerated
“Message: ” + $item.Message >> c:\systools\bat\event.txt
“====================================================” >> c:\systools\bat\event.txt
“ ”
}
}
[/code:1]
Puis de ce fichier j'en extrais ce que je désires.
pour le mettre dans un tableau que je souhaiterais trier par ordre alphabétique.
Le contenu est en fait
les logname des personnes qui font des fautes de frappes sur leur password.
De la je souhaiterais compter combien de fois est représenté les logins des personnes et envoyer un mail aux admins pour investir si c'est pas une attaque, ou bien des autres flux qui sont pas autorisés.
[code:1]
$comptes = get-content c:\systools\bat\event.txt
for ($i=0; $i -lt $comptes.length; $i++) {
if ($comptes[$i] -match \" Nom de l'utilisateur : \") {
#$comptes[$i].split(\"=\")[1].Trim()
[String[]]$tab = $comptes[$i].Split()[-1]
}
}
[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
[code:1]
cd c:\temp
dir -recurse|group-object extension
[/code:1]
Dans ton cas je verrais bien quelque chose comme :
[code:1]
$colItems|
Where {( $events -contains $item.EventID ) -and ($item.TimeWritten -ge $lastWrite)}|
Group-Object UserName
[/code:1]
Si cela répond au besoin restera à construire la présentation/formatage des données.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- rodriguez
- Auteur du sujet
- Hors Ligne
- Membre senior
-
- Messages : 61
- Remerciements reçus 0
As-tu regardé le cmdlet Group-Object ?
[code:1]
cd c:\temp
dir -recurse|group-object extension
[/code:1]
Dans ton cas je verrais bien quelque chose comme :
[code:1]
$colItems|
Where {( $events -contains $item.EventID ) -and ($item.TimeWritten -ge $lastWrite)}|
Group-Object UserName
[/code:1]
Si cela répond au besoin restera à construire la présentation/formatage des données.
Merci pour cette commande, grâce à ton exemple sur c:\temp,
j'ai bien pu voir que le resultat répondait à mon souhait.
Maintenant la requette avec Username ou +$item.username reste vide. je vais piocher dans ce sens merci pour ton aide.
Connexion ou Créer un compte pour participer à la conversation.
- rodriguez
- Auteur du sujet
- Hors Ligne
- Membre senior
-
- Messages : 61
- Remerciements reçus 0
[code:1]
$comptes = get-content c:\event.txt
for ($i=0; $i -lt $comptes.length; $i++) {
if ($comptes[$i] -match \" Nom de l'utilisateur : \") {
#récupère le login a coté de: \"Nom de l'utilisateur\"
$comptes[$i].Split()[-1] >> c:\login.txt
}
}
#compte le nombre fois que le login apparait
get-content c:\login.txt | group-object >> c:\comptes.txt
[/code:1]
le fichier event.txt contient les informations que je souhaite récupérer des journaux d'évènement
Le login TXT contient que les login des utilisateurs et enfin comptes.txt reprend les logins des Users et le nombre fois qu'ils apparaissent dans login.txt.
Maintenant je vais chercher le nombre > 10 par exemple recuperer le login, mettre encore dans un fichier et Hop envois du Mail.
Message édité par: noxydius, à: 27/11/09 10:56<br><br>Message édité par: noxydius, à: 27/11/09 11:27
Connexion ou Créer un compte pour participer à la conversation.
- rodriguez
- Auteur du sujet
- Hors Ligne
- Membre senior
-
- Messages : 61
- Remerciements reçus 0
[code:1]
Remove-Item c:\systools\bat\temp\event.txt
Remove-Item c:\systools\bat\temp\login.txt
Remove-Item c:\systools\bat\temp\comptes.xls
$intervalle = 1
$logs = [System.Diagnostics.EventLog]::GetEventLogs('****')
#logs[7] représent lors du \"get-eventlog -list\" la place du security sur le serveur, ceci peut
#varier celon le serveur.
$colItems = $logs[7].entries
$Now = Get-Date
$lastWrite = $Now.AddDays(-$intervalle)
#numero de l'event à chercher. 529 c'est mot de passe faux.
$events = 529
foreach ($item in $colItems){
if (( $events -contains $item.EventID ) -and ($item.TimeWritten -ge $lastWrite)){
#“Serveur incriminé : ” + $item.MachineName
”====================================================” >> c:\systools\bat\temp\event.txt
“Event ID: ” + $item.EventID >> c:\systools\bat\temp\event.txt
“Date de l'évènement: ” + $item.TimeWritten >> c:\systools\bat\temp\event.txt
#“Categorie: ” + $item.Category
#“Type de l'entrée: ” + $item.EntryType
#“Nom utilisateur: ” + $item.UserName
#“Data: ” + $item.Data
#“Source: ” + $item.Source
#“Date de l'écriture de l'évènement: ” + $item.TimeGenerated
“Message: ” + $item.Message >> c:\systools\bat\temp\event.txt
“====================================================” >> c:\systools\bat\temp\event.txt
“ ”
}
}
#Lecture du fichier Event.txt
$comptes = get-content c:\systools\bat\temp\event.txt
for ($i=0; $i -lt $comptes.length; $i++) {
if ($comptes[$i] -match \" Nom de l'utilisateur : \") {
#récupère le login a coté de: \"Nom de l'utilisateur\"
$comptes[$i].Split()[-1] >> c:\systools\bat\temp\login.txt
}
}
#compte le nombre fois que le login apparait
get-content c:\systools\bat\temp\login.txt | group-object >> c:\systools\bat\temp\comptes.xls
# Envois du fichier à ******
$expediteur = \" JournalSecuriteAD@compass-group.fr\"
$destinataire = \"*****.fr\"
$serveur = \"smtp1.*****.fr\"
$fichier = \"c:\systools\bat\temp\comptes.xls\"
$objet = \"Journal securité AD.\" + [System.DateTime]::Now
$texte = \"Bonjour,
Ce fichier XLS regroupe les fautes de frappes ou comptes inconnus lors d'une ouverture de
session ou l'acces à un périphérique Réseaux.
Triez ce fichier XLS afin de voir le plus grand nombre d'alertes sur la 1er colonne.
Et déterminez si cela vient d'une attaque, ou une mal adresse de l'utilisateur.
Mail automatique ne pas répondre.
\"
$message = new-object System.Net.Mail.MailMessage $expediteur, $destinataire, $objet, $texte
$attachment = new-object System.Net.Mail.Attachment $fichier
$message.Attachments.Add($attachment)
$client = new-object System.Net.Mail.SmtpClient $serveur
$client.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials
$client.Send($message)
#R.S
[/code:1]
Je suis conscient que mon script est loin d'etre des plus compacté ou des mieux ficelé..
Message édité par: noxydius, à: 30/11/09 08:50<br><br>Message édité par: noxydius, à: 30/11/09 08:51
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Compter le nombre fois le meme resultat ??