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

Linux Discussion :

Test à distance avec ssh


Sujet :

Linux

  1. #1
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 858
    Points : 4 792
    Points
    4 792
    Par défaut Test à distance avec ssh
    Bonjour

    Dans mon script, je veux tester à distance en utilisant ssh si un répertoire existe sur la machine à laquelle je me connecte:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if [ ! `ssh $LOGNAME@remote_host 'test -d ./Backup/tgz'` ]
    then
    	ssh $LOGNAME@remote_host 'mkdir ./Backup/tgz' >> $log 2>&1
    	echo "`date +"%d/%m/%Y - %H:%M:%S : "`Creation of the repertory tgz for $HOSTNAME." >> $log
    fi
    Seulement, je me suis aperçu d'une erreur, même quand le répertoire existe, i lrentre malgré tout dans le if et tente de créer le répertoire.
    Comment donc affiner ma condition pour qu'elle soit valide ?

    Merci d'avance de vos réponses.

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code ni le tag

    Je ne répond à aucune question technique par MP.

  2. #2
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut
    Le code retour est celui du ssh et non celui du test.
    Pourtant :
    Citation Envoyé par man ssh
    The session terminates when the command or shell on the remote machine exits and all X11
    and TCP/IP connections have been closed. The exit status of the remote program is
    returned as the exit status of ssh.
    Si le test d'existence du répertoire s'est bien passé, ssh renvoie 0
    Si ssh renvoie 0 ton test renvoie 1 donc, on crée le répertoire
    DONC
    Si le test d'existence du répertoire s'est bien passé, on crée le répertoire
    Si le répertoire existe, on le crée ...
    c'est ça ?

    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

  3. #3
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 858
    Points : 4 792
    Points
    4 792
    Par défaut
    T'as vite modifié ton post ggnore
    Ce que je veux, c'est la chose suivante : je teste si le répertoire existe. S'il n'existe pas, je le crée, sinon, on fait autre chose. Le problème, comme tu le souligne, c'est que ssh renvoit 0 dans tous les cas. Utiliser rsh, mmmoui, why not, mais je souhaite faire du tout "ssh" (plus sécurisé et je dormirais sur mes 2 oreilles).
    Merci de ta réponse en tout cas.

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code ni le tag

    Je ne répond à aucune question technique par MP.

  4. #4
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut
    Citation Envoyé par GLDavid
    T'as vite modifié ton post ggnore
    Ce que je veux, c'est la chose suivante : je teste si le répertoire existe. S'il n'existe pas, je le crée, sinon, on fait autre chose. Le problème, comme tu le souligne, c'est que ssh renvoit 0 dans tous les cas. Utiliser rsh, mmmoui, why not, mais je souhaite faire du tout "ssh" (plus sécurisé et je dormirais sur mes 2 oreilles).
    Merci de ta réponse en tout cas.

    @++
    ssh renvoie la valeur de la commande à distance. Si tu as besoin d'une preuve :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $ ssh etienne@192.168.28.41 aze
    Password:
    bash: aze: command not found
    $ echo $?
    127
    $ ssh etienne@192.168.28.41 ls
    Password:
    Achats
    [...]
    etienne@samba-eu:/var/www/NWU$ echo $?
    0
    Relie bien mon message, je l'ai peut être plus modifié que tu ne l'as cru
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

  5. #5
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 858
    Points : 4 792
    Points
    4 792
    Par défaut
    Exact, il fallait bien lire. Voici mon code corrigé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #!/bin/bash
     
    ssh $LOGNAME@remote_host 'test -d ./Backup/toto'
    R=$?
    if [ $R -eq 0 ]
    then
    	echo "Y a"
    else
    	echo "Y a pas"
    fi
    Merci à toi ggnore

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code ni le tag

    Je ne répond à aucune question technique par MP.

  6. #6
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 858
    Points : 4 792
    Points
    4 792
    Par défaut
    Salut

    Je fais un up et j'ai enlevé mon tag Résolu car mon test est complètement faux !
    Mon but est de vérifier l'existence d'un répertoire distant en utilisant ssh. Or là, je teste la valeur de retour de la commande ssh, pas de l'existence de mon répertoire !
    Donc, j'ai essayé ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #!/bin/bash
     
    REPDEST=/my_path`echo $HOSTNAME | cut -f1 -d .`
    echo $REPDEST
    DUMMY=`ssh gldavid@remote_host 'if test -d $REPDEST; then echo "toto";fi'`
    echo $DUMMY
    if [ -z $DUMMY ]
    then
    	ssh gldavid@remote_host 'mkdir $REPDEST'
    	echo "Creation de "$REPDEST
    fi
    Seulement, même si le répertoire distant n'existe pas, le test du if est toujours bon ! Alors, qu'il ne devrait pas écrire toto.
    Comment donc résoudre ce problème ?

    Merci d'avance de vos réponses et désolé de cette fausse joie.

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code ni le tag

    Je ne répond à aucune question technique par MP.

  7. #7
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut

    Citation Envoyé par man ssh
    The exit status of the remote program is returned as the exit status of ssh.
    Je comprends pas pourquoi ton ssh ne fait pas ça !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    etienne@info1:~ $ ssh etienne@portier test -d /etc
    Password:
    etienne@info1:~ $ echo $?
    0
    etienne@info1:~ $ ssh etienne@portier test -d /aze
    Password:
    etienne@info1:~ $ echo $?
    1
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

  8. #8
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 858
    Points : 4 792
    Points
    4 792
    Par défaut
    En fait, j'ai résolu (et cette fois-ci pour de bon, du moins j'espère) mon problème. Il fallait écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DUMMY=`ssh gldavid@remote_host "if test -d $REPDEST ; then echo 'toto' ; fi"`
    Mais je pense reprendre ta solution ggnore qu iest plus logique à mon sens.
    Merci à toi ggnore pour tes pistes de recherches.

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code ni le tag

    Je ne répond à aucune question technique par MP.

  9. #9
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut
    Je suis sur les starting blocks, j'attends que tu enlèves de nouveau résolu
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

  10. #10
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 858
    Points : 4 792
    Points
    4 792
    Par défaut
    Attends, je fais un test de mon script, je te dirais si ça foire Croises les doigts pour moi !

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code ni le tag

    Je ne répond à aucune question technique par MP.

  11. #11
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 858
    Points : 4 792
    Points
    4 792
    Par défaut
    Ca marche !
    Tu peux retourner à tes occupations ggnore !
    Merci encore de ton aide !!!

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code ni le tag

    Je ne répond à aucune question technique par MP.

  12. #12
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut
    Citation Envoyé par GLDavid
    Ca marche !
    Tu peux retourner à tes occupations ggnore !
    Merci encore de ton aide !!!

    @++
    C'est rien du tout
    Bonne continuation.
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 31/03/2009, 16h47
  2. administration a distance avec SSH VNC!
    Par new dotnet(c#) dans le forum Développement
    Réponses: 1
    Dernier message: 30/08/2006, 11h42
  3. Maintenir une connexion ouverte avec ssh
    Par jean-jacques varvenne dans le forum Réseau
    Réponses: 2
    Dernier message: 23/01/2005, 21h39
  4. Test PostgreSQL v8 avec NAMEDATALEN = 128 caracteres
    Par hondjack dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 13/10/2004, 00h32
  5. Test d'éxistence avec un RecordSet
    Par matt63 dans le forum Langage SQL
    Réponses: 10
    Dernier message: 21/04/2004, 12h23

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