Comment je corrige ce script sous ubuntu
pianoclassique
Messages postés
108
Date d'inscription
Statut
Membre
Dernière intervention
-
lami20j Messages postés 21331 Date d'inscription Statut Modérateur, Contributeur sécurité Dernière intervention -
lami20j Messages postés 21331 Date d'inscription Statut Modérateur, Contributeur sécurité Dernière intervention -
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";
}
}
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";
}
}
A voir également:
- Comment je corrige ce script sous ubuntu
- Script vidéo youtube - Guide
- Ubuntu 32 bits - Télécharger - Systèmes d'exploitation
- Mas script - Accueil - Windows
- Ghost script - Télécharger - Polices de caractères
- Ubuntu sans interface graphique ✓ - Forum Linux / Unix
1 réponse
Salut,
voilà
Merci d'arrêter de poster partout le même message.
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.