-
Http service check
Hello à tous,
J’ai un projet à mettre en place dans mon entreprise.
Je pensais avoir trouvé la solution seulement voilà : cela ne fonctionne pas, et je ne comprends pas pourquoi, car pour moi il n’y a aucun soucis dans le contenu de mon script.
Le but de mon script est de vérifier une page web et d’exécuter un script en fonction de la réponse.
Voici le début du script :
#!/usr/bin/perl
my $check = qx{curl -Is 192.168.69.134 | head -n1};
if ( $check eq "HTTP/1.1 200 OK" )
Le problème est le suivant : bien que le CURL me renvois "HTTP/1.1 200 OK", les chaines de caractère sont considérés comme différentes, mais pour moi ce sont les mêmes.
Par avance, merci :)
-
tu dois surement avoir un caractère "invisible" dans la chaîne (surement à la fin); pour le voir essaie:
Code:
print ">$check<\n";
pour l'enlever (si à la fin), je pense que ça devrait être bon avec:
Code:
$check=~s#[\r\n\s]+$##;
-
Même avis, un simple chomp sur $check devrait sans doute suffire, sinon une expression régulière comme celle déjà proposée.
-
Moi, je te propose un vrai programme simple et propre avec LWP.
-
Le problème a été identifié:
Ancienne commande : if ( $check eq "HTTP/1.1 200 OK" )
Nouvelle commande :if ($check =~ "HTTP/1.1 200 OK"
Le eq posait problème, en remplaçant par les caractéres "=~".
Cela a résolu mon erreur.
Merci de votre aide :)
-
Ta solution ne me plait pas car tu n'as pas compris pourquoi cela fonctionne ;) et certes ça fonctionne actuellement, mais demain, tu aura le même souci pour un autre cas. Tu n'as même pas testé les autres solutions.
Enfin, si ça te convient, tant mieux !
-
La commande chomp n'avait rien donné pour informations.
Merci
-
La chose importante à faire n'était pas tant de tester les solutions proposées, mais de bien diagnostiquer la cause du problème, par exemple en imprimant la variable $check entre des caractères témoins comme te l'avait proposé Cyril:
Code:
print ">$check<\n";
te permettant de visualiser son contenu complet (ou à l'aide du debuger Perl ).