Passer des variables en ssh avec la commande
Je veux être en mesure d'exécuter une commande à partir de ma machine à l'aide de ssh et de passer par la variable d'environnement $BUILD_NUMBER
Voici ce que j'essaie:
ssh pvt@192.168.1.133 '~/tools/myScript.pl $BUILD_NUMBER'
$BUILD_NUMBER
est fixé sur la machine à faire du ssh appel et puisque la variable n'existe pas sur l'hôte distant, il ne sont pas ramassés.
Comment puis-je passer la valeur de $BUILD_NUMBER
?
- sans rapport avec Hudson, enlevé l'étiquette. (Hudson crée la variable)
Vous devez vous connecter pour publier un commentaire.
Si vous utilisez
au lieu de
votre shell interpole le
$BUILD_NUMBER
avant d'envoyer la chaîne de commande de l'hôte distant./usr/bin/crc32: No such file or directory
par exemple.Variables dans des guillemets simples ne sont pas évalués. L'utilisation des guillemets:
Le shell va développer des variables dans les doubles guillemets, mais pas dans des guillemets simples. Cela va changer dans votre chaîne souhaitée avant d'être transmis à la
ssh
commande.(Cette réponse peut sembler inutilement compliqué, mais il est facilement extensible et robuste concernant les espaces et les caractères spéciaux, pour autant que je sais.)
Vous pouvez nourrir les données par le biais de l'entrée standard de la
ssh
de commande etread
qu'à partir de l'emplacement distant.Dans l'exemple suivant,
ssh
un null ligne en donnant le nom et la valeur de la variable.shh
commande elle-même, nous bouclons ces lignes, pour initialiser les variables requises.De sortie:
Si vous n'avez pas besoin de
export
ceux-ci, vous devriez être en mesure d'utiliserdeclare
au lieu deexport
.Un vraiment simplifié la version (si vous n'avez pas besoin de l'extensibilité, ont une seule variable de processus, etc.) ressemblerait à:
Comme répondu précédemment, vous n'avez pas besoin de définir la variable d'environnement sur l'hôte distant. Au lieu de cela, vous pouvez simplement faire de la méta-extension sur l'hôte local, et passer la valeur à l'hôte distant.
Si vous voulez vraiment définir la variable d'environnement sur l'hôte distant et l'utilisez, vous pouvez utiliser le
env
programmeDans ce cas, c'est un peu exagéré, et note
env BUILD_NUMBER=$BUILD_NUMBER
ne le méta de l'agrandissement du localaccueil
BUILD_NUMBER
variable d'environnement sera utilisé parle shell distant
Échapper à la variable afin d'accéder à des variables en dehors de la session ssh:
ssh [email protected] "~/tools/myScript.pl \$BUILD_NUMBER"
'$FOO'
est équivalent à"\$FOO"
. la question était "comment passer une variable du shell avec SSH?". Comme déjà indiqué par @PatrickTrentin ce n'est pas une bonne réponse car alorsBUILD_NUMBER
variable d'environnement n'est pas définie à distance.