2011-02-13 11 views
5

Plataforma: Windows 2003 con Perl Estoy buscando la manera de cortar el ID de usuario del archivo de registro de IIS. Luego averigua qué hizo ese usuario. Archivo subido, CWD ... cosas así. Hay [uniqu_ID] ID de usuario. Cómo recuperar ese Id y buscar lo que hizo. Por favor ayuda.Parse inicia sesión en Windows Server 2003 para buscar acciones de usuario

+0

¿Puede por favor publicar algunas líneas de código de ejemplo? El problema parece bastante fácil, pero los ejemplos serían geniales. – simbabque

Respuesta

0

Log Parser 2.2:

Log Parser es una herramienta poderosa y versátil que proporciona acceso universal consulta a datos basados ​​en texto, tales como registro archivos, archivos XML y CSV, como así como los datos clave fuentes en el sistema operativo Windows® , como el Registro de eventos , el Registro, el sistema de archivos y Active Directory®.

+0

No puedo descargar nada en el servidor. Tengo que trabajar con lo que tengo en este momento. Perl en Windows 2003 – Moe

+0

descargue a su caja local, y procese el log allí. –

+0

Ojalá pudiera ... Escribí un script de Perl que se ejecutará en el servidor para el informe de estado. la secuencia de comandos envía por correo electrónico el informe de estado. No puedo hacer eso desde mi PC. tiene que ejecutarse en el servidor. – Moe

0

Encontré un ejemplo de un archivo de registro IIS en Windows 2003 Server here. Aún así, publique sus propias líneas de registro de ejemplo.

192.168.114.201, -, 03/20/01, 7:55:20, W3SVC2, SERVER, 172.21.13.45, 4502, 163, 3223, 200, 0, GET, /DeptLogo.gif, -, 

Dado que esto no es más que un archivo separado por comas, tiene varias formas diferentes de hacerlo aquí. Puede usar Text::CSV si está instalado en su máquina. Si no, aquí hay un ejemplo simple.

use strict; 
use warnings; 
use Data::Dumper; 

my $user = {}; # we will store the actions in here 

# This is what the log file looks like when split into an array 
# 0: Client IP address 
# 1: User name 
# 2: Date 
# 3: Time 
# 4: Service and instance 
# 5: Server name 
# 6: Server IP 
# 7: Time taken 
# 8: Client bytes sent 
# 9: Server bytes sent 
# 10: Service status code 
# 11: Windows status code 
# 12: Request type 
# 13: Target of operation 
# 14: Parameters 

open $log, '<', 'path/to/logfile.log'; 
while (my $line = <$log>) { 
    my @fields = split /, /, $line; # split on comma and space 
    # you'll get an array of actions for each user 
    push @{ $user->{$fields[1]} }, "$fields[12] $fields[13]"; 
    # or more specific: 
# push @{ $user->{$fields[1]} }, { 
#  'time' => $fields[3], 
#  'action' => $fields[12], 
#  'target' => $fields[13], 
# }; 
} 
close $log; 

print Dumper $user; # lets have a look 

# More stuff to do with the data here... 

Ésta es la salida:

$VAR1 = { 
      '-' => [ 
        'GET /DeptLogo.gif' 
       ] 
     }; 

A continuación, podría ir y escribir el contenido de $user a otro archivo o grupo de archivos.

foreach my $u (sort keys %$user) { 
    print "$u\r\n"; 
    foreach $action (@{ $user->{$u} }) { 
    print "$action\r\n"; 
    } 
} 
+0

@Moe: si la respuesta no es aceptable, explique por qué, por lo que podría profundizar en su problema. –

Cuestiones relacionadas