Rechercher : dans
Par :

Comment je corrige ce script sous ubuntu

Dernière réponse le 11 jun 2008 à 17:52:59 pianoclassique, le 28 mai 2008 à 12:21:03 
 Signaler ce message aux modérateurs

Bonjour,

J’ai un petit travail sur le nagios et l’mrtg sous ubuntu, plus précisément sur le fichier log de mrtg.
Je veux écrire un script perl qui faire :
Récupère la date actuelle, et cherche cette date dans le fichier log de mrtg si existe ou nom, s’il existe le programme récupère le 5ème champ qui correspond a cette date et ligne de fichier log mrtg.
Aussi il y a une condition sur le 5ème champ pour qu’il ne faille pas passer une max et une min.
Je veux passer le fichier log de mrtg, max et min comme des arguments. Mon fichier log est sous le /var/www/mrtg/localhost_2.log qui est sous la forme :
1211624102 2042932 238472
1211624102 3429 516 3429 516
1211623801 2725 262 2725 262
1211623800 34389 32027 4752469 4765100
1211623500 4752469 4765100 4752469 4765100
1211623200 4752469 4765100 4752469 4765100
1211622900 4736629 4749216 4752469 4765100
1211622600 594 26 2534 294
1211622300 2560 297 10504 1216
1211622000 10439 1208 10504 1216
1211621700 843 96 845 97
1211621400 398 3 399 4
1211621100 346 3 468 4
1211620800 468 3 535 12
1211620500 534 11 535 12

Donc je veux corriger cette script pour qu’il devient exécutable de cette manière :
Perl script.pl localhost_2 200 150 // 200 est le max et 150 est la min
Voilà le script :

#!/usr/bin/perl
Use strict
use Time::Local;
#my @line;
my $adr=$ARGV[0]._2;
open ("file","/var/www/mrtg/$adr.log")|| die ("impossible d'accéder a mrtg.log\n");
my $test=timegm(localtime);
while ( $line = <file> ){
chomp ($line);
@line = split( / /, $line);
next unless defined $line[0];
if ($line[0] ==$test ){
if ($line[4]==0) {
return 0;
print STDOUT "erreur time\n";
}
elsif ($line[4] < $ARGV[1] && $line[2] > $ARGV[2])
{
return 1;
print STDOUT "val exist\n";
}
else{
print STDOUT "val n'est pas dans lintervl\n";
}
}

Configuration: Windows XP
Internet Explorer 7.0

Meilleures réponses pour « comment je corrige ce script sous ubuntu » dans :
Script au démarrage et à l'arrêt d'Ubuntu VoirFaire exécuter un script au démarrage d'Ubuntu Modifiez le fichier /etc/rc.local et ajoutez vos commandes. Le script doit toujours se terminer par un exit 0 Faire exécuter un script au redémarrage Placez votre script dans /etc/rc0.d et rendez...
Exécuter un script shell VoirExécution d'un script Pour pouvoir exécuter un script ou un programme en ligne de commande il y a plusieurs possibilités : 1. Le chemin absolu 2. Le chemin relatif 3. Modifier la variable PATH Note: Le Sha...
Linux – Ubuntu – Réparer les erreurs du système de fichiers VoirEn supposant que vous avez installé Linux Ubuntu sur votre PC et sur la partition /dev/sdaX. Si jamais il arrivait que le système de fichier soit endommagé ou détérioré, il est possible de le réparer. Il suffit : de démarrer avec le CD...

1

 lami20j, le 28 mai 2008 à 14:04:59

Salut,

voilà

#!/usr/bin/perl
use strict;use warnings;
use Time::Local;

my $adr=$ARGV[0];
open FILE,"/var/www/mrtg/$adr.log"
   or die "impossible d'accéder a mrtg.log\n";
my $test=timegm(localtime);
while ( my $l = <FILE> ){
  chomp ($l);
  my @line = split / /, $l;

  if ($line[0] == $test ){
    if ($line[4]==0) {
      print "erreur time\n";
    }elsif ($line[4] < $ARGV[1] && $line[2] > $ARGV[2]) {
      print "val exist\n";
    }else{
      print "val n'est pas dans lintervl\n";
    }
  }
}
__END__

Merci d'arrêter de poster partout le même message.
106485010510997108

Répondre à lami20j
Collection CommentÇaMarche.net