Récupérer des données dans un fichier txt [PERL] - Perl - Programmation
Marsh Posté le 02-11-2012 à 11:29:41
Citation : #!C:\Perl\bin -w |
j'connais pas bien perl sous windows, mais j'crois que c'est pas bon cette ligne... enfin, ca n'empechera pas le script de fonctionner...
Citation : my $resultat = '$commande > resultat.txt'; |
j'espere que ce sont des apostrophes inversees, sinon, ca n'executera pas la commande.
Citation : close "resultat.txt"; |
ce n'est pas comme ca qu'on ferme un fichier. de plus, tu n'as pas a fermer les fichiers que tu n'as pas toi-meme ouvert. l'execution de la $commande s'est deja occupe de la fermeture de ce fichier.
Citation : open FICHIER,"<$file"; |
Citation : while ($_ = <FILE> ){ |
tu ouvres un fichier avec l'identifiant FICHIER et tu lis avec l'identifiant FILE ?
Citation : if ( $_ =~ /\s(\d+\s$substring)/ ) |
par rapport a ton exemple (.0435 requests/sec), ca ne fonctionnera pas. dans ton exemple, il n'y a pas de blanc \s avant les chiffres. il y a un point.
Citation : $reqpsec == $1; |
pour faire une affectation, il ne faut qu'un seul signe =
Marsh Posté le 02-11-2012 à 19:18:26
J'aurais été directement été lire le statut sur le serveur Apache (il semble clair que vous pouvez vous octroyer les droits pour lire le statut directement), en ce qui me concerne.
Code :
|
A+,
Marsh Posté le 30-10-2012 à 11:05:51
Bonjour à tous,
Alors voila mon problème, je doit faire un script pour le monitorage d'un serveur apache.
Je fait exécuter à mon script la commande "apachectl fullstatus" enregistre la sortie dans un fichier txt jusque la tout va bien. Le problème est après je doit parser ce fichier et récupérer des données et les affectés à des variables.
Voila ce que j'ai besoin de récupérer :
.0435 requests/sec - 66 B/second
1 requests currently being processed, 49 idle workers
index usage: 0%, cache usage: 0%
ajp hostname Init Ok 1 0 0 0 0
En gras les valeurs que je doit récupérer (qui bien sur ne sont pas toujours les mêmes).
Niveau code j'avais commencer un petit truc mais j'ai des doutes pour la recherche. Voila mon code pour le début :
#!C:\Perl\bin -w
# ========================================
# Execution de la commande et enregistrement du resultat dans un fichier
my $commande = "apachectl fullstatus";
my $resultat = '$commande > resultat.txt';
print $resultat;
close "resultat.txt";
my $file = "resultat.txt";
open FICHIER,"<$file";
# ========================================
# Recherche du nombres de requêtes par seconde
my $substring = "requests/sec";
my $reqpsec;
while ($_ = <FILE> ){
if ( $_ =~ /\s(\d+\s$substring)/ )
{
$reqpsec == $1;
}
print $reqpsec;
}
pour l'instant je n'en suis qu'au premier paramètre.
Merci de votre aide.
Message édité par steph0805 le 30-10-2012 à 11:07:06
---------------
bulat nv4 - NFP107 (12,75) - RCP105 (12) - NSY104 (16,5) - SMB137 (12) - GLG105 (10) - RSX101 (17) - RSX102 (11,5) - NSY205 (18) - NSY206 (14) - NSY107 (13,38) - NFP108 (15) - EME102 (10.4) - TET102 (12) - ENG110 (10) -