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

Shell et commandes GNU Discussion :

Exécuter un script local avec environnement local sur une machine distante


Sujet :

Shell et commandes GNU

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 158
    Points : 80
    Points
    80
    Par défaut Exécuter un script local avec environnement local sur une machine distante
    Bonjour,

    Je vous expose mon problème technique.

    J'ai sur une machine A un script "script_A.sh" et un fichier ini "env_machine_A.ini" qui est requis au déroulement de celui ci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    . <chemin ini>/.env_machine_A.ini

    Hors je souhaite exécuter "script_A.sh" sur une machine B depuis ma machine A.
    Pour faire cela j’exécute la commande suivante depuis ma machine A

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ssh <user machine B>@<machine B> 'bash -s' < script_A.sh
    Hors pour que mon script s’exécute correctement sur la machine B, je suis obligé de copier le fichier ini "env_machine_A.ini" de ma machine A, sur ma machine B avec le chemin identique.

    Y a-t-il un moyen d'ouvrir une session ssh depuis la machine A sur la machine B, en conservant l'environnement de la machine A?
    Comme cela je n'aurai pas à déployer le env_machine_A.ini sur la machine B.

    je vous remercie d'avance pour votre aide.

  2. #2
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Salut,

    Essaye ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ssh <user machine B>@<machine B> 'bash -s' < . <chemin ini>/.env_machine_A.ini && script_A.sh
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  3. #3
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par zipe31 Voir le message
    Salut,

    Essaye ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ssh <user machine B>@<machine B> 'bash -s' < . <chemin ini>/.env_machine_A.ini && script_A.sh
    Tu es sûr que ça marche, le "< ." ?!?

    J'avais bien pensé à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat <chemin ini>/.env_machine_A.ini script_A.sh | ssh <user machine B>@<machine B> 'bash -s'
    mais ça veut dire qu'il faut retirer l'instruction . <chemin ini>/.env_machine_A.ini de script_A.sh

  4. #4
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Citation Envoyé par jack-ft Voir le message
    Tu es sûr que ça marche, le "< ." ?!?
    Non, pas du tout D'où le "essaye" en début de phrase
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  5. #5
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    Citation Envoyé par leon1983 Voir le message
    Bonjour,

    Je vous expose mon problème technique.

    Y a-t-il un moyen d'ouvrir une session ssh depuis la machine A sur la machine B, en conservant l'environnement de la machine A?
    non

    pas sans faire de bidouillage dans l'esprit de ce que Zipe31 t'a déjà proposé.

    si l'environnement doit être trop complexe pour un fichier ini faut faire une pseudo install genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    tar czf - /chemin/.env_machine_A.ini script_A.sh | \
    ssh user@host "cat > /tmp/truc.tar.gz ; cd /chemin/ ;  tar zxf /tmp/truc.tar.gz && \
    script_a.sh || /usr/games/banner 'K.O.4'"

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 387
    Points
    19 387
    Par défaut
    Bonjour,

    pourquoi ne pas sourcer le fichier ini à l'intérieur du script ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  7. #7
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Citation Envoyé par frp31 Voir le message
    non
    pas sans faire de bidouillage dans l'esprit de ce que Zipe31 t'a déjà proposé.
    Quoi que... la bidouille de l'ami jack-ft marche très bien ceci dit
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 158
    Points : 80
    Points
    80
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat <chemin ini>/.env_machine_A.ini script_A.sh | ssh <user machine B>@<machine B> 'bash -s'
    la solution ci dessus fonctionne merci beaucoup.

    Par contre je suis embêté car je souhaite passer des paramètres à mon script, et je n'arrive pas à les isoler de la portée du cat...
    J'ai tenté

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $(cat <chemin ini>/.env_machine_A.ini script_A.sh) PARAM1 PARAM2 | ssh <user machine B>@<machine B> 'bash -s'
    mais ca exécute la sortie du cat, pas juste la commande cat.

  9. #9
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat <chemin ini>/.env_machine_A.ini script_A.sh | ssh <user machine B>@<machine B> 'bash -s' param1 param2
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 158
    Points : 80
    Points
    80
    Par défaut
    ca fonctionne merci !

  11. #11
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    pourquoi ne pas sourcer le fichier ini à l'intérieur du script ?
    La réponse est dans le premier post:

    Citation Envoyé par leon1983 Voir le message
    Hors pour que mon script s’exécute correctement sur la machine B, je suis obligé de copier le fichier ini "env_machine_A.ini" de ma machine A, sur ma machine B avec le chemin identique.
    Il ne veut pas déployer le fichier d'environnement sur la machine B.

    Une autre possibilité que nous utilisons parfois ici consiste à exporter juste les variables dont nous avons besoin (sous réserve qu'il n'y en ait pas trop!), genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    su <user> -c "export VAR='${VAR}' ; chemin/vers/le/script '${ARG}'"
    [HS=orthographe]
    Le mot "hors" veut dire "dehors"!
    Lorsqu'on veut dire "mais pourtant" ou "et pourtant" ou "et il se trouve que", il est généralement préférable d'utiliser "or" sans hache et sans esse...
    [/HS]

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

Discussions similaires

  1. Passer des fonctions de mon script local sur une machine distante
    Par leon1983 dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 28/01/2013, 11h27
  2. Script sh qui se connecte sur une machine distante
    Par corgato dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 29/08/2012, 18h42
  3. Réponses: 3
    Dernier message: 17/03/2011, 15h13
  4. [Continuum] Lancer un build mais avec un résultat sur une machine distante
    Par bassemeco dans le forum Intégration Continue
    Réponses: 10
    Dernier message: 02/07/2008, 11h19
  5. Réponses: 3
    Dernier message: 27/04/2007, 19h19

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