Question

Je travaille un projet pour analyser différents sur un serveur en csv. Quelqu'un at-il un bon script perl ou une déclaration gawk qui peut analyser un journal PIX standard / ASA au format CSV ...

Merci.

Pas de solution correcte

Autres conseils

J'aidé écrire un interne Parse pour les journaux PIX / ASA que je ne peux pas partager. Nous voulions avoir une source d'informations et de destination pour tous les messages liés à la circulation, par exemple. Nous avons fini par faire un module qui analysait chaque code de message individuellement. Un autre obstacle est que certaines informations comme les noms de protocole et les déclarations de name apparaissent comme alias, pas le numéro ou l'adresse IP dans les journaux. Le module CPAN PIX :: Walker peut aider à résoudre ces problèmes.

Si vous voulez simplement la gravité, le code et le message que vous pouvez utiliser:

#!/usr/bin/perl

use strict;

if (-e $ARGV[0]) {
 open(INFILE,$ARGV[0]);
} else {
 die "Cannot open logfile $ARGV[0]\n";
}

foreach my $line (<INFILE>) {
 chomp $line;
 if (/^%(ASA|PIX)-(\d{1})-(\d{6}): (.*)/) {
  print "\"" . $1 . "\",\"" . $2 . "\",\"" . $3 . "\"\n";
 }
}

Mais si c'est tout ce que vous voulez que je vous recommande d'utiliser comme syslog-ng et MySQL avec une config:

options {
        long_hostnames(off);
        sync(100);
        stats(43200);
        use_fqdn(no);
        keep_hostname(yes);
        owner (nglog);
};

source udpsource { udp(ip(0.0.0.0) port(514));};

parser asa {
 csv-parser(colunms("ASA_SEV", "ASA_CODE", "ASA_TXT")
 flags(escape-none)
 delimiters("-:")
 );
};

destination d_sql { 
  sql(type(mysql)
  host("logserver") username("syslog-ng") password("password")
  database("logs")
  table("ASAlogs")
  columns("datetime", "host", "severity", "code", "message")
  values("$R_DATE", "$HOST", "$ASA_SEV", "$ASA_CODE", "$ASA_TXT")
  indexes("datetime", "host", "severity", "code"));
};

log { source{udpsource};
    log {parser(asa); destination(d_sql)};
};

De cette façon, il est dans une base de données que vous pouvez exécuter des rapports à partir. Vous pouvez également faire un PHP très simple ou Ruby on frontal Web Rails.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top