IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

demande d'aide en perl


Sujet :

Langage Perl

  1. #1
    Candidat au Club
    Inscrit en
    Septembre 2006
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 1
    Points : 4
    Points
    4
    Par défaut demande d'aide en perl
    bonjour
    je suis nouvelle dans ce forum et en perl et je dois ecrire un programme qui permet de lire le journal d'evenement(eventlog) et de le transferer vers un fichier texte l'ennuis est que je dois le filtrer prendre les 20 dernières entrées ou les entrées d'hier à aujourd'hui mais j'arrive pas à le faire. voici le programme que j'ai:

    use Getopt::Long;
    use Time::Local;
    use Win32::EventLog;

    $SEC = 1;
    $MIN = 60 * $SEC;
    $HOUR = 60 * $MIN;
    $DAY = 24 * $HOUR;

    %EVENT_TYPE = (
    #eval EVENTLOG_AUDIT_FAILURE => 'AUDIT_FAILURE',
    #eval EVENTLOG_AUDIT_SUCCESS => 'AUDIT_SUCCESS',
    eval EVENTLOG_ERROR_TYPE => 'ERROR',
    eval EVENTLOG_WARNING_TYPE => 'WARNING',
    #eval EVENTLOG_INFORMATION_TYPE => 'INFORMATION',
    );

    %Config = (
    log => 'system',

    );
    Configure( \%Config );
    if( $Config{help} )
    {
    Syntax();
    exit;
    }
    if( defined $Config{date} )
    {
    my( $Year, $Month, $Day ) = ( $Config{date} =~ /^(\d{4}).(\d{2}).(\d{2})/ );
    $TIME_LIMIT = timelocal( 0, 0, 0, $Day, $Month - 1, $Year - 1900 );
    }
    elsif( $Config{hour} || $Config{day} )
    {
    $TIME_LIMIT = time() - ( $DAY * $Config{day} ) - ( $HOUR * $Config{hour} );
    }

    if( ! scalar @{$Config{machine}} )
    {
    push( @{$Config{machine}}, Win32::NodeName );
    }

    if( defined( $Config{type} ) )
    {
    foreach my $Mask ( @{$Config{type}} )
    {
    # Try referencing the EVENTLOG_xxxx_TYPE and EVENTLOG_xxxxx
    # constants. One of them is bound to work.
    $EVENT_MASK |= eval( "EVENTLOG_" . uc( $Mask ) . "_TYPE" );
    $EVENT_MASK |= eval( "EVENTLOG_" . uc( $Mask ) );
    }
    }
    else
    {
    map
    {
    $EVENT_MASK |= 0 + $_;
    }( keys( %EVENT_TYPE ) );
    }

    # Tell the extension to always attempt to fetch the
    # event log message table text
    $Win32::EventLog::GetMessageText = 1;
    open ( RES,'>>c:\Resultat_System.txt');
    select (RES);
    $~ = EventLogFormat;
    foreach my $Machine ( @{$Config{machine}} )
    {
    my $EventLog;
    if( $EventLog = Win32::EventLog->new( $Config{log}, $Machine ) )
    {
    my %Records;
    local %Event;
    local $Count = 0;

    while( ( $EventLog->Read( EVENTLOG_BACKWARDS_READ
    | EVENTLOG_SEQUENTIAL_READ,
    0,
    \%Event ) )
    && ( $Event{TimeGenerated} > $TIME_LIMIT ) )
    {
    # Display the event if it is one of our requested
    # event types
    $Count++;
    write if( $Event{EventType} & $EVENT_MASK );
    }
    }
    else
    {
    print "Can not connect to the $Config{log} Event Log on $Machine.\n";
    }
    }
    close RES;
    sub Configure
    {
    my( $Config ) = @_;

    Getopt::Long::Configure( "prefix_pattern=(-|\/)" );
    $Result = GetOptions( $Config,
    qw(
    machine|m=s@
    log|l=s
    type|t=s@
    hour|h=i
    day|d=i
    date=s
    help|?
    )
    );
    $Config->{help} = 1 if( ! $Result );
    push( @{$Config->{machine}}, Win32::NodeName() ) unless( scalar @{$Config->{machine}} );
    }

    sub Syntax
    {
    my( $Script ) = ( $0 =~ /([^\\]*?)$/ );
    my $Whitespace = " " x length( $Script );
    print<< "EOT";

    Syntax:
    $Script [-m Machine] [-t EventType] [-l Log]
    $Whitespace [-h Hours] [-d Days] [-date Date]
    $Whitespace [-help]
    -m Machine......Name of machine whose Event Log is to be examined.
    This switch can be specified multiple times.
    -t EventType....Type of event to display:
    ERROR
    WARNING
    INFORMATION
    AUDIT_SUCCESS
    AUDIT_FAILURE
    This switch can be specified multiple times.
    -l Log..........Name of Event Log to examine. Common examples:
    #Application
    #Security
    System
    This switch can be specified multiple times.
    -h Hours........Will consider events between now and the specified
    number of hours previous.
    -d Days.........Will consider events between now and the specified
    number of days previous.
    -date Date......Will consider events between now and the specified
    date. Date is in international time format
    (eg. 2000.07.18)
    EOT


    }

    format EventLogFormat =
    --------------------------------
    @>>>>> @<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    $Event{RecordNumber}, "\\\\" . $Event{Computer}, $Event{Message}
    @<<<<<<<<<<<<<<<<<<<<<<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    scalar localtime( $Event{TimeGenerated} ), $Event{Message}
    Type: @<<<<<<<<<<<<<<<<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    $EVENT_TYPE{$Event{EventType}}, $Event{Message}
    Source: @<<<<<<<<<<<<<<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    $Event{Source}, $Event{Message}
    ~ ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    $Event{Message}
    ~ ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    $Event{Message}
    ~ ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    $Event{Message}
    ~ ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    $Event{Message}
    ~ ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    $Event{Message}

    .

    j'ai vraiment besoin d'aide.
    merci d'avance.

  2. #2
    Membre éprouvé Avatar de MarneusCalgarXP
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    911
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 911
    Points : 1 118
    Points
    1 118
    Par défaut
    Tout d'abord, bienvenue sur le forum.

    Si tu veux obtenir une réponse à ton message, il faut que tu suives un certain nombre de règles:
    1. entourer ton code de balises CODE (bouton # de l'interface), et indenter le code
    2. isoler ton problème pour poster uniquement la partie qui pose problème. Plus le message est court, plus de personnes auront le courage de le lire, et donc plus tu auras de chances d'obtenir une réponse


    Là, ton message est un peu long, et surtout illisible

    Je ne répond à aucune question technique par MP.

    Si votre problème est réglé, n'oubliez pas Dans tous les cas

  3. #3
    Membre chevronné
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Points : 2 004
    Points
    2 004
    Par défaut
    Bonsjour,

    Essaye aussi de mettre un titre plus explicite, ya rien de plus énervant qu'un topic du genre help me, ou j'ai besoin d'aide...
    "En essayant continuellement, on finit par réussir. Donc : plus ça rate, plus on a de chances que ça marche" (devise Shadock)
    Application :

    ainsi qu'à regarder la avant de poser une question.

    La rubrique Perl recrute, contactez-moi.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Demande d'aide pour une requête
    Par arkzor dans le forum Requêtes
    Réponses: 3
    Dernier message: 28/12/2004, 02h40
  2. [langage] Demande d'informatins sur PERL (Debutant)
    Par poirier dans le forum Langage
    Réponses: 9
    Dernier message: 17/08/2004, 17h13
  3. demande d'aide sur samba
    Par marcoss dans le forum Développement
    Réponses: 5
    Dernier message: 04/12/2003, 19h38
  4. [TPW][cours]Demande d'aide pour finir un programme
    Par jf dans le forum Turbo Pascal
    Réponses: 21
    Dernier message: 16/06/2003, 18h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo