Précédent   Forum des professionnels en informatique > Systèmes > Linux > Système
Système Vos questions autour de l'administration système
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/02/2011, 21h23   #1
Débutant
 
Inscription : mai 2005
Messages : 1 957
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : mai 2005
Messages : 1 957
Points : 615
Points : 615
Par défaut Comment puis tester si un host est joignable

Bonjour,
Je cherche une solution pour savoir si un ordinateur distant est joingable et me retourne 1 ou 0

J'ai trouvé ceci.

Code :
1
2
3
4
5
if [ ping -c 1 128.18.9.1 ]; then
   echo "ok"
else
   echo "KO"
fi
Code :
1
2
3
./rsync_push_wire.sh: line 3: 123.45.9.1: command not found
./rsync_push_wire.sh: line 3: [: -c: binary operator expected
KO
Il y a forcément une erreur dans ma condition, mais je ne sais pas comment la corigé et surtout, que ca me retourne un 1 ou un 0 uniquement.

PS: J'ai inventé l'adresse IP

Merci pour votre aide
__________________
Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!
pierrot10 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 17/02/2011, 22h11   #2
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 070
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 070
Points : 4 146
Points : 4 146
Bonjour,

les crochets sont inutiles :
Code :
1
2
3
4
if ping -c1 "$addr" >/dev/null 2>&1
then echo ok
else echo KO
fi
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 17/02/2011, 22h14   #3
Débutant
 
Inscription : mai 2005
Messages : 1 957
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : mai 2005
Messages : 1 957
Points : 615
Points : 615
Ha ben c'est ce que j'ai vu, mais le
Citation:
>/dev/null 2>&1
m'a "troublé".

Qu'es-ce que ca veut dire exactement ce qu se trouve après le /dev...

Merci
__________________
Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!
pierrot10 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 17/02/2011, 22h54   #4
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 070
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 070
Points : 4 146
Points : 4 146
c'est pour rendre le ping silencieux; ça redirige la sortie standard et la sortie d'erreur d'une commande vers /dev/null (cf. man 4 null).
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 17/02/2011, 23h09   #5
Débutant
 
Inscription : mai 2005
Messages : 1 957
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : mai 2005
Messages : 1 957
Points : 615
Points : 615
Merci pour tes explications,
mais je n'arrive pas le faire parché.

Dans un terminal, j'ai pingé 123.456.7.8 (j'ai pingé ma vrai adresse)
et ca me retourne une répose.

Ensuite, dans mon code,
J'ai mis ceci
Code :
1
2
3
4
5
6
 
addr=123.456.7.8
if ping -c1 "$addr" >/dev/null 2>&1
then echo ok
else echo KO
fi
Après avoir entré enter, j0ai un moment d'attente, puis j'ai KO.
Je ne comprends pas le moment d'attente, alors que le le ping du terminal me retourne une réponse immédiatement.
Et pourquoi KOm alors que le terminal, ping bien?
__________________
Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!
pierrot10 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 25/02/2011, 10h45   #6
Invité régulier
 
fabien bontemps
Inscription : février 2011
Messages : 7
Détails du profil
Informations personnelles :
Nom : fabien bontemps

Informations forums :
Inscription : février 2011
Messages : 7
Points : 5
Points : 5
Salut pierrot10

tient test ça :


Code :
1
2
3
4
5
6
7
8
9
10
#!/bin/bash
adress=123.456.7.8
 
ping -c1 $adress > /dev/null
if [ $? == 0 ]
then
          echo ' Ping OK '
else
          echo ' Ping KO '
fi
Sinon regarde le Heartbeat

Merci

/Fabien
Fabien.bontemps est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 25/02/2011, 13h35   #7
Membre Expert
 
Homme Alexis
Intégrateur d'Exploitation
Inscription : février 2003
Messages : 876
Détails du profil
Informations personnelles :
Nom : Homme Alexis
Âge : 32
Localisation : France

Informations professionnelles :
Activité : Intégrateur d'Exploitation
Secteur : Biens de consommation

Informations forums :
Inscription : février 2003
Messages : 876
Points : 1 619
Points : 1 619
Envoyer un message via ICQ à Alek-C Envoyer un message via Skype™ à Alek-C
Essaye de retirer la redirection vers /dev/null pour voir si tu as un message d'erreur ?
Alek-C est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 26/02/2011, 21h41   #8
Débutant
 
Inscription : mai 2005
Messages : 1 957
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : mai 2005
Messages : 1 957
Points : 615
Points : 615
Salut tous,

Merci pour vos réponses.
J'ai trouvé ceci qi marche bien:
Code :
1
2
3
4
5
6
7
8
9
 
# CONTROLE SI LE HOST EST JOINGNABLE
if ping -c1 "$ADDR" >/dev/null 2>&1 
then 
	echo "OUI"
else 
	echo "NON"
	exit
fi
Le problème que j'ai , et c'était la raison primicipale de vouloir mettre ceci en place, c'est qui doit me retoruner NON, si je n'ai pas de connection VPN.

Je suis à la maison, je peux pinger mon serveur sans connection VPN. Evidemment je ne peux pas me connecter (montage)

Alors mon code, ci-dessus me retourne OUI alors que je souhaiterais qu'il me retourne OUI, seulment s'il y a une connexion VPN et que le serveur est joignable.

Comment puis-je faire ceci?

Milles mercis
__________________
Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!
pierrot10 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 28/02/2011, 11h36   #9
Modérateur
 
Avatar de gangsoleil
 
R&D en systemes informatiques bas niveau Unix/Linux
Inscription : mai 2004
Messages : 5 464
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : R&D en systemes informatiques bas niveau Unix/Linux

Informations forums :
Inscription : mai 2004
Messages : 5 464
Points : 9 585
Points : 9 585
Bonjour,

Citation:
Envoyé par pierrot10 Voir le message
Le problème que j'ai , et c'était la raison primicipale de vouloir mettre ceci en place, c'est qui doit me retoruner NON, si je n'ai pas de connection VPN.

Je suis à la maison, je peux pinger mon serveur sans connection VPN. Evidemment je ne peux pas me connecter (montage)

Alors mon code, ci-dessus me retourne OUI alors que je souhaiterais qu'il me retourne OUI, seulment s'il y a une connexion VPN et que le serveur est joignable.

Comment puis-je faire ceci?
Tu dois tester l'ecoute du serveur VPN sur le port idoine : il faut que tu ouvres une socket sur ce port, et en cas de succes de connexion, c'est qu'il y a quelqu'un qui ecoute.
Si tu souhaites etre certain que c'est la connexion VPN qui ecoute sur ce port, et pas une autre application, tu n'as pas le choix que de te connecter reellement.

Pour un test simple, utilise telnet en precisant le port de connexion.
Pour un test plus complexe, il te faut un langage de programmation permettant l'ouverture d'une socket.
Pour tester sans reveiller le serveur VPN, il te faut un langage de programmation te permettant de gerer les paquets que tu vas envoyer lors de l'initialisation de la connexion (il faut envoyer directement le second paquet, ce qui permettra au serveur de te repondre qu'il n'a pas eu le premier, ce qui te permettra de savoir qu'il y a bien un serveur qui ecoute sur ce port).
__________________
Modérateur "C", "Informatique Générale & Hardware" et "Unix"
Les règles du forum
gangsoleil est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h28.


 
 
 
 
Partenaires

Hébergement Web