Je voudrais exécuter une commande et un script situés sur une machine distante avec un script sur une machine locale. Je sais qu'il est possible d'exécuter ce genre de commandes avec ssh
, j'ai donc fait:
#!/bin/bash
ssh username@target 'cd locationOf/theScript/; ./myScript.sh'
Cela fonctionne parfaitement. J'aimerais que ce script soit plus générique, utilisant des variables. C'est maintenant:
#!/bin/bash
LOCATION=locationOf/theScript/
EXEC=myScript.sh
ssh username@target 'cd ${LOCATION}; ./${EXEC}'
Et je reçois cette erreur: bash: ./: is a directory
Je suppose que la machine distante ne connaît pas ces variables. Existe-t-il un moyen de les exporter vers la cible?
shell-script
ssh
remote
variable-substitution
Jean-Baptiste Martin
la source
la source
Réponses:
Je ne connais pas un moyen facile d'exporter des variables d'environnement vers la cible, mais votre script pourrait fonctionner si vous le remplacez
'
par"
. Avec'
s, la chaîne'cd ${LOCATION}; ./${EXEC}'
est passée textuellement, mais avecla substitution des variables se fait localement.
Notez que les valeurs de
LOCATION
etEXEC
sont transmises au shell distant, donc cela ne fonctionne que si elles ne contiennent aucun caractère spécial du shell.la source