Question Traitement des logs dhcp de windows

Plus d'informations
il y a 14 ans 8 mois #9907 par Richard Lazaro
EDIT : nothing<br><br>Message édité par: Richard Lazaro, à: 12/07/11 16:14

Think-MS : (Get-Life).Days | %{ Learn-More }

\\"Problems cannot be solved by the same level of thinking that created them.\\" - Albert Einstein

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

Plus d'informations
il y a 14 ans 8 mois #9908 par Richard Lazaro
Alors j'ai fait 2-3 bidouillage pour arriver à ceci :

[code:1]
# Déclaration de la variable de recherche des hostnames dans le fichier \&quot;usernames_table.csv\&quot;
$srch_hostname = Get-Content C:\script\script_dhcp\tables\usernames_table.csv | foreach{ $_.split(';')[0] }

# Déclaration de la variable de recherche des usernames dans le fichier 'usernames_table.csv\&quot;
$srch_username = @{}
Get-Content C:\users\richardl\Desktop\usernames_table.csv | foreach{ $srch_username += @{\&quot;$($_.split(';')[0])\&quot; = \&quot;$($_.split(';')[1])\&quot;} }


# Déclaration du chemin contenant les logs dhcp
$dhcplogpath = \&quot;C:\windows\system32\dhcp\&quot;
# Déclaration du fichier contenant le résultat de l'extraction
$extractfile = \&quot;C:\script\extract_dhcp.csv\&quot;

# Obtention de la date de la veille
$yesterday=(get-date (get-date).AddDays(-1) -uformat %Y%m%d)
# Obtention des 3 premières lettres du jour de la veille
$logdate=([string]((get-date).AddDays(-1).DayofWeek)).substring(0,3)

#Création des colonnes du fichier csv d'extraction des données des logs dhcp
\&quot;nevent,date,time,event,ip,hostname,mac\&quot; &gt; $extractfile

# Obtention des lignes du fichier dhcp de log contenant le code 11(dhcp renew) et les hostnames à pister
$extract = get-content $dhcplogpath\DhcpSrvLog-$logdate.log | Where-Object {($_ -match '^11,') -and ($srch_hostname -contains $_.Split(',')[5])}
$extract &gt;&gt; $extractfile

# Exportation des colonnes du csv vers le fichier final
$impextractfile = Import-CSV $extractfile
$impextractfile | Select-Object date, time, hostname, @{Label='username';Expression={$srch_username[$_.hostname]}}, ip | Export-CSV C:\users\richardl\Desktop\temp.csv -NoTypeInformation
[/code:1]

Je passe donc par un tableau de hash pour pouvoir faire la correspondance hostname/username.

J'espère que cela va pouvoir t'aider.

Bien Cordialement,
Richard Lazaro.

Think-MS : (Get-Life).Days | %{ Learn-More }

\\"Problems cannot be solved by the same level of thinking that created them.\\" - Albert Einstein

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

Plus d'informations
il y a 14 ans 8 mois #9909 par Dada
Réponse de Dada sur le sujet Re:Traitement des logs dhcp de windows
Bonjour Richard,

J'ai compris ton code.
Hélas, le where object ne trouve aucune occurence de lignes.
Pourtant ton code mentionne bien les lignes débutant par 11 et dont le hostname de la sixième colonne du log dhcp correspond a un hostname du $srch_hostname



J'ai également testé ton ajout de colonne avec le username en insérant les lignes dans mon code qui fonctionne.
J'ai donc ajouter tes 2 lignes :
$srch_username = @{}
Get-content

Ainsi que la ligne :
@{Label='username';Expression={$srch_username[$_.hostname]}}

Hélas le résultat est le suivant dans le fichier temp2.csv. Il y a bien l'ajout d'une colonne mais avec aucune valeur :
06/30/11,08:01:27,G53P6.entreprise.fr,,192.168.42.127<br><br>Message édité par: shellfree, à: 13/07/11 16:40

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

Plus d'informations
il y a 14 ans 8 mois #9910 par Dada
Réponse de Dada sur le sujet Re:Traitement des logs dhcp de windows
[code:1]
# Déclaration de la variable de recherche des hostnames dans le fichier \&quot;usernames_table.csv\&quot;
$srch_hostname = Get-Content C:\script\script_dhcp\tables\usernames_table.csv | foreach{ $_.split(';')[0] }

# Déclaration de la variable de recherche des usernames dans le fichier 'usernames_table.csv\&quot;
$srch_username = Get-Content C:\script\script_dhcp\tables\usernames_table.csv | foreach{ $_.split(';')[1] }

# Déclaration du chemin contenant les logs dhcp
$dhcplogpath = \&quot;C:\windows\system32\dhcp\&quot;

# Déclaration du fichier contenant le résultat de l'extraction
$extractfile = \&quot;C:\script\extract_dhcp.csv\&quot;

# Obtention de la date de la veille
$yesterday=(get-date (get-date).AddDays(-1) -uformat %Y%m%d)

# Obtention des 3 premières lettres du jour de la veille
$logdate=([string]((get-date).AddDays(-1).DayofWeek)).substring(0,3)

#Création des colonnes du fichier csv d'extraction des données des logs dhcp
\&quot;nevent,date,time,event,ip,hostname,mac\&quot; &gt; $extractfile

# Obtention des lignes du fichier dhcp de log contenant le code 11(dhcp renew) et les hostnames à pister
$extract = get-content $dhcplogpath\DhcpSrvLog-$logdate.log | select-string ^11 | select-string $srch_hostname
$extract &gt;&gt; $extractfile

# Exportation des colonnes du csv vers le fichier final
$impextractfile = Import-CSV $extractfile
$impextractfile | Select-Object date, time, hostname, ip | Export-CSV C:\script\temp.csv -NoTypeInformation

# Suppression des guillemets dans le fichier csv
$delguill = Get-Content C:\script\temp.csv | Foreach {$_ -replace '\&quot;',''}
$delguill &gt; C:\script\temp.csv

# Suppresion de la ligne contenant les virgules du fichier d'origine
$delvirgule = get-content C:\script\temp.csv | where {$_ -notmatch \&quot;,,,\&quot;}
$delvirgule &gt; C:\script\temp.csv

# Insertion du nom de la personne en fonction du hostname
#Import-CSV C:\script\temp.csv | Select-Object hostname | if ($_ -eq $srch_username) {
Import-Csv C:\script\temp.csv -Delimiter ',' | % { $_.ip = $_.ip+\&quot;,test\&quot; ; $_} | Export-Csv C:\script\temp2.csv -Delimiter ',' -NoTypeInformation

# Suppression des guillemets dans le fichier csv
$delguillbis = Get-Content C:\script\temp2.csv | Foreach {$_ -replace '\&quot;',''}
$delguillbis &gt; C:\script\temp2.csv

# Suppresion de la ligne contenant les virgules du fichier d'origine
$delvirgulebis = get-content C:\script\temp2.csv | where {$_ -notmatch \&quot;,,,\&quot;}
$delvirgulebis &gt; C:\script\temp2.csv
[/code:1]


Pour ma part, voilà ou j'en suis.
Le code est plus sale que le tiens car je fais des suppressions de guillemets et de lignes superflues dans les csv.
Mais bon, actuellement j'arrive à ajouter une 5ème colonne avec la valeur test. Il ne me manque plus qu'à insérer un if \&quot;colonne hostname\&quot; = $srch_hostname alors j'écris en bout de ligne le $srch_username

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

Plus d'informations
il y a 14 ans 8 mois #9911 par Richard Lazaro
Comme tu veux, le script que j'ai posté fait déjà ça. Il faut juste reprendre le même principe pour rajouter la colonne site et basta.

Think-MS : (Get-Life).Days | %{ Learn-More }

\\"Problems cannot be solved by the same level of thinking that created them.\\" - Albert Einstein

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

Plus d'informations
il y a 14 ans 8 mois #9912 par Dada
Réponse de Dada sur le sujet Re:Traitement des logs dhcp de windows
Je souhaiterais bien conserver ton script qui est plus propre que le miens mais il ne fonctionne pas. Voilà pourquoi j'ai conservé pour l'instant le mien.
J'ai abandonné la colonne site. Je ne souhaite pplus insérer qu'une colonne username en matchant le hostname.

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

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