Предотвращение расширения / оценки параметра в команде ssh - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть сценарий оболочки, который запускает Docker-контейнер на удаленном сервере.

Я пытаюсь отправить имя хоста удаленного сервера в контейнер, но я просто получаю имя хоста моего локального компьютера, на котором я запускаю скрипт.

Команда выглядит так в скрипте:

ssh $remote "docker run -h '`hostname`' \
                        -e 'VARIABLE=$SCRIPT_VAR' \
                        -e 'HOST_HOSTNAME=`hostname`' \
                        ..."

И имя хоста, и переменная среды host.hostname становятся именем моего локального компьютера.

Я знаю, что могу использовать такие одинарные кавычки:

ssh $remote 'echo "`hostname`"'

и это будет работать. Но тогда я не могу использовать переменные скрипта, такие как $SCRIPT_VAR

Как я могу получить его для оценки на удаленном сервере, а также использовать переменные?

1 Ответ

0 голосов
/ 14 ноября 2018

Вам все еще нужно убедиться, что расширение $SCRIPT_VAR заключено в кавычки, чтобы предотвратить его разбиение на слова или расширение пути.

ssh $remote 'docker run -h "$(hostname)" \
                        -e "VARIABLE='"$SCRIPT_VAR"'" \
                        -e "HOST_HOSTNAME=$(hostname)" \
                        ...'
...