IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration système Discussion :

Comment puis tester si un host est joignable


Sujet :

Administration système

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 185
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 185
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if [ ping -c 1 128.18.9.1 ]; then
       echo "ok"
    else
       echo "KO"
    fi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 673
    Par défaut
    Bonjour,

    les crochets sont inutiles :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if ping -c1 "$addr" >/dev/null 2>&1
    then echo ok
    else echo KO
    fi
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 185
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 185
    Par défaut
    Ha ben c'est ce que j'ai vu, mais le
    >/dev/null 2>&1
    m'a "troublé".

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

    Merci

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 673
    Par défaut
    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'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 185
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 185
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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?

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 17
    Par défaut
    Salut pierrot10

    tient test ça :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  7. #7
    Membre très actif

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Par défaut
    Essaye de retirer la redirection vers /dev/null pour voir si tu as un message d'erreur ?

  8. #8
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 185
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 185
    Par défaut
    Salut tous,

    Merci pour vos réponses.
    J'ai trouvé ceci qi marche bien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  9. #9
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Par défaut
    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).
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

Discussions similaires

  1. Comment tester si un champ est un nombre
    Par the kikouyou dans le forum Langage SQL
    Réponses: 13
    Dernier message: 17/07/2014, 14h57
  2. comment tester si un formulaire est vide?
    Par stéphane_ais2 dans le forum Access
    Réponses: 5
    Dernier message: 22/09/2005, 10h28
  3. comment tester si une variable est de type indifined
    Par amelhog dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 10/08/2005, 09h32
  4. [langage] Comment tester si une chaine est vide
    Par |Bio dans le forum Langage
    Réponses: 4
    Dernier message: 04/05/2005, 15h05
  5. Comment tester si un repertoire est vide sous Linux
    Par chouchouappc dans le forum Linux
    Réponses: 3
    Dernier message: 24/02/2005, 12h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo