129 votes

Passer des variables dans la commande ssh à distance

Je veux pouvoir exécuter une commande à partir de ma machine en utilisant ssh et passer à travers 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 défini sur la machine faisant l'appel ssh et puisque la variable n'existe pas sur l'hôte distant, elle n'est pas récupérée.

Comment passer la valeur de $BUILD_NUMBER ?

244voto

sarnold Points 62720

Si vous utilisez

ssh pvt@192.168.1.133 "~/tools/run_pvt.pl $BUILD_NUMBER"

au lieu de

ssh pvt@192.168.1.133 '~/tools/run_pvt.pl $BUILD_NUMBER'

votre shell va interpoler le $BUILD_NUMBER avant d'envoyer la chaîne de commande à l'hôte distant.

34voto

Stephen Points 16714

Les variables dans les guillemets simples ne sont pas évaluées. Utiliser des guillemets doubles :

ssh pvt@192.168.1.133 "~/tools/run_pvt.pl $BUILD_NUMBER"

Le shell développera les variables en guillemets doubles, mais pas en guillemets simples. Cela changera dans la chaîne souhaitée avant d'être passé à la commande ssh.

4voto

Alex Stragies Points 422

La liste des variables d'environnement acceptées sur SSHD inclut par défaut LC_*. Ainsi :

LC_MY_BUILDN="1.2.3" ssh -o "SendEnv LC_MY_BUILDN" ssh-host 'echo $LC_MY_BUILDN'
1.2.3

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X