Выполнение команд с помощью сценариев ssh и shell с использованием переменных на удаленном компьютере

8

Я хотел бы выполнить команду и скрипт, расположенный на удаленной машине, со скриптом на локальной машине. Я знаю, что можно выполнять такие команды с помощью ssh, поэтому я сделал:

#!/bin/bash
ssh username@target 'cd locationOf/theScript/; ./myScript.sh'

Работает отлично. Я хотел бы, чтобы этот скрипт был более общим, используя переменные. Теперь это:

#!/bin/bash
LOCATION=locationOf/theScript/
EXEC=myScript.sh
ssh username@target 'cd ${LOCATION}; ./${EXEC}'

И я получаю эту ошибку: bash: ./: is a directory

Я думаю, что удаленная машина не знает этих переменных. Так есть ли способ экспортировать их в цель?

Жан-Батист Мартин
источник

Ответы:

7

Я не знаю простой способ экспорта переменной среды для цели, но ваш сценарий может сработать , если заменить 'с ". С 's строка 'cd ${LOCATION}; ./${EXEC}'передается дословно, но с

ssh username@target "cd ${LOCATION}; ./${EXEC}"

Подстановка переменных производится локально.

Обратите внимание, что значения LOCATIONи EXECпередаются в удаленную оболочку, поэтому это работает, только если они не содержат специальных символов оболочки.

isido
источник