Forum Programmation.shell probleme de variable imputé a une boucle dans un script qui appelle un connection ssh

Posté par  .
Étiquettes : aucune
0
7
juil.
2006
bonjours a tous,
voila mon probleme
j'ai fait un script bash pour echanger de fichier entre 2 serveurs.
dans se script, j'appelle une connection ssh sur l'autre serveur
et lors de cette connection ssh j'active un script qui doit interragir sur le 2ième serveur

dans le script ssh j'utilise une boucle for avec comme variable language qui prend comme valeur fr de en es it pt ....
et quand je fait un echo de la variable language
RIEN de RIEN
elle n'a pas de valeur

est ce que quelqu'un peu m'aider HELP HELP

merci baucoup a tous

voici un recp de mon script:



export pathverio1 pathrainbow2 filenamerainbow date hour backup backup_date backup_hour

ssh YYYYYY@XXX.ZZZ.PPP.AAA "#!/bin/bash

for language in fr de en es it mn pt ru; do

pathverio=$pathverio1/$language/$pathrainbow2
pathveriofile=$pathverio1/$language/$pathrainbow2/$filenamerainbow

if [ -d \"$pathverio\" ]; then echo $pathverio1

if test -e $pathveriofile ; then pathverio2=$pathverio1/$language/$pathrainbow2
  • # interprétation

    Posté par  (site web personnel) . Évalué à 4.

    Attention, le shelle de départ (celui dans lequel tu lance ssh) interprete le contenu de "". Donc le code que tu exécute n'est probablement pas celui que tu crois.

    Pour que ca marche,
    soit tu mets ton code entre '',
    soit tu fais des \$variables,
    soit tu enregistre ton code dans un fichier sur la machine distante et tu l'exécute a travers bash,
    soit tu l'enregistre sur la machine locale et tu fais ssh YYYYYY@XXX.ZZZ.PPP.AAA < fichier
    ...
    • [^] # Re: interprétation

      Posté par  . Évalué à 2.

      En plus, on voit bien que le script lancé par ssh est écrit pour utiliser des variables définies dans son environnement, mais aussi définie dans l'environnement du script lanceur. Autant dire que c'est un beau mélange, qui tel-quel n'est corrigeable qu'avec la méthode du \$variable (les \ appliqués uniquement aux variables du shell distant, pas du local)

      Je pense que la solution la plus propre serait d'avoir un script dans un fichier distant, qui accepte des arguments en ligne de commande pour transmettre les parametres.
      • [^] # Re: interprétation

        Posté par  . Évalué à 1.

        salut dagget,
        tout d'abord autant pour moi quand j'ai fait un copié collé d'une partie de mon script j'ai oublié de mettre ... " pour montrer que mon script étais entre " "
        et surtout merci pour ton aide car sa marche super bien
        je connaissais cette syntax devant les guillements pour qu'il les interprette dans le script et non pas comme fin de script mais je connaissais pas pour les variable

        enfin encore un grand merci

        kris83

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.