bonjour a tous,
j'aimerais savoir s'il est possible d'effectuer un ping avec perl, sans forcement passer par la bibliotheque WWW::Mechanize, merci.
Version imprimable
bonjour a tous,
j'aimerais savoir s'il est possible d'effectuer un ping avec perl, sans forcement passer par la bibliotheque WWW::Mechanize, merci.
Net::Ping ...
http://search.cpan.org/search?query=ping&mode=all
merci,
mais qd je l'utilise, j'ai un message d'erreur à l'execution :
"icmp ping requires root privilege"
quel fichier dois-je reconfigurer?
Est-ce que ping marche quand tu le fais en dehors de ton script perl ?
oui sous MS-DOS ça marche...
mais des que j'essaie d'executer ce sript depuis un invite de commande linux ca ne marche plus :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 #!/usr/bin/perl -w use strict; use Net::Ping; my $host = $ARGV[0]; my $p = Net::Ping->new("icmp"); if ($p->ping($host)) { print "$host est vivant.\n"; } else { print "$host est hors d'atteinte.\n"; }
apparamment je crois que je ne peu pas envoyer des donees ICMP, a cause de ma configuration.
est-il possible de faire la meme chose avec tcp ou udp?
question pour apprendre c'est quoi un ping?
C'est vrai que j'ai mal formulé ma question :?
Mais est-il possible de faire la meme chose avec tcp ou udp? car manifestement un ping simple ICMP est chose impossible par le biais de perl, meme avec la bibliotheque Net::Ping. Si qqn a une idee sur la question merci de m'en faire partCitation:
Envoyé par DefinitionPing
Non non, la faute n'est pas à Perl, mais à Linux, car seul root semble avoir le droit de faire un ping sur ton pc... Essaie de lancer le script en root pour vérifier que le problème est bien là.
--
Jedaï
mais est-il possible de contourner ça? c-a-d pouvoir le faire sans modifier la configuration de linux? parce que quand je fais un ping normal sous linux ça marche
Pourquoi pas utiliser sudo alors ? Tu configures le fichiers /etc/sudoers avec visudo et tu peux lancer ton script avec@++Code:sudo ton_script.pl
oui faudra que je jette un coup d'oeil...
mais sinon j'ai tenté le script suivant:
ça lance automatiquement un ping, mais vu que je travaille sous linux, je sais pas comment limiter le nombre de pings, comme sous MS DOS avec -n [nombre]Code:
1
2
3
4
5
6 #!/usr/bin/perl -w use strict; my $host = $ARGV[0]; system("ping ".$host);
et comment saisir le résultat de la commande?
je suis en train de chercher mais si qqn a deja la reponse ca serait cool
je ne connais rien sur le ping, mais pour recuperer les resultats, tu peux faire un tableau,Citation:
ça lance automatiquement un ping, mais vu que je travaille sous linux, je sais pas comment limiter le nombre de pings, comme sous MS DOS avec -n [nombre]
et comment saisir le résultat de la commande?
sinon pourCode:
1
2 my @toto = system("ping ".$host); ou my @toto = `ping $host`;
un man ping pourrait t'aider non. Voilà peu pas faire plus, car je suis pas sur linux et connais pas ping :(Citation:
je sais pas comment limiter le nombre de pings, comme sous MS DOS avec -n [nombre]
Pour la programmation voir les cours et tutoriels pour apprendre Perl : http://perl.developpez.com/cours/
ping est une commande envoyant des paquets pour tester si une machine distante répond ou non.
Sinon, pour le reste, djibril a indiqué la voie à suivre.
@++
Merci pour votre aide j'ai une ebauche de solution:
Ce script marche a à priori quand on entre en parametre un nom de domaine ou localhost, mais il reste un pb quand on entre une adresse physique... en tout cas votre aide m'a permis de me mettre sur la voie, merci!Code:
1
2
3
4
5
6
7
8
9
10
11
12 #!/usr/bin/perl -w use strict; my $host = $ARGV[0]; my @reponse = system("ping -c 1 ".$host); if ($reponse[0] == 0) {print("Connexion OK\n");} elsif ($reponse[0] == 512) {print("Pas de connexion\n");} #elsif ($reponse[0] == 256) {stop;}
Une adresse physique ? Tu entends par là une adresse IP ?
Normalement, ping prend les adresses IP.
@++