Preventing expansion/evaluation of parameter in ssh command
I have a shell script that runs a docker container on a remote server.
I'm trying to send the hostname of the remote server into the container but i just get the hostname of my local computer where i run the script.
The command looks like this in the script:
ssh $remote "docker run -h '`hostname`'
-e 'VARIABLE=$SCRIPT_VAR'
-e 'HOST_HOSTNAME=`hostname`'
..."
Both hostname and the environment variable host.hostname becomes the name of my local computer.
I know I can use singlequotes like this:
ssh $remote 'echo "`hostname`"'
and it will work. But then i cannot use scriptvariables like the $SCRIPT_VAR
How can i get it to evaluate on the remote server instead while also being able to use variables?
linux shell ssh
add a comment |
I have a shell script that runs a docker container on a remote server.
I'm trying to send the hostname of the remote server into the container but i just get the hostname of my local computer where i run the script.
The command looks like this in the script:
ssh $remote "docker run -h '`hostname`'
-e 'VARIABLE=$SCRIPT_VAR'
-e 'HOST_HOSTNAME=`hostname`'
..."
Both hostname and the environment variable host.hostname becomes the name of my local computer.
I know I can use singlequotes like this:
ssh $remote 'echo "`hostname`"'
and it will work. But then i cannot use scriptvariables like the $SCRIPT_VAR
How can i get it to evaluate on the remote server instead while also being able to use variables?
linux shell ssh
Why the downvote?
– mTv
Nov 14 '18 at 11:17
Possible duplicate of Difference between single and double quotes in Bash
– Ipor Sircer
Nov 14 '18 at 11:30
Not a duplicate. I know the difference. I just want something in between. Think i figured it out myself though.
– mTv
Nov 14 '18 at 11:45
Your "solution" leaves$SCRIPT_VARunquoted, which may break your command if it contains whitespace.
– chepner
Nov 14 '18 at 15:26
Please place answers in Answer blocks. Later, you can accept your own Answer. Also see How does accepting an answer work?
– jww
Nov 14 '18 at 22:54
add a comment |
I have a shell script that runs a docker container on a remote server.
I'm trying to send the hostname of the remote server into the container but i just get the hostname of my local computer where i run the script.
The command looks like this in the script:
ssh $remote "docker run -h '`hostname`'
-e 'VARIABLE=$SCRIPT_VAR'
-e 'HOST_HOSTNAME=`hostname`'
..."
Both hostname and the environment variable host.hostname becomes the name of my local computer.
I know I can use singlequotes like this:
ssh $remote 'echo "`hostname`"'
and it will work. But then i cannot use scriptvariables like the $SCRIPT_VAR
How can i get it to evaluate on the remote server instead while also being able to use variables?
linux shell ssh
I have a shell script that runs a docker container on a remote server.
I'm trying to send the hostname of the remote server into the container but i just get the hostname of my local computer where i run the script.
The command looks like this in the script:
ssh $remote "docker run -h '`hostname`'
-e 'VARIABLE=$SCRIPT_VAR'
-e 'HOST_HOSTNAME=`hostname`'
..."
Both hostname and the environment variable host.hostname becomes the name of my local computer.
I know I can use singlequotes like this:
ssh $remote 'echo "`hostname`"'
and it will work. But then i cannot use scriptvariables like the $SCRIPT_VAR
How can i get it to evaluate on the remote server instead while also being able to use variables?
linux shell ssh
linux shell ssh
edited Nov 14 '18 at 22:53
jww
53.3k40229502
53.3k40229502
asked Nov 14 '18 at 11:13
mTvmTv
371213
371213
Why the downvote?
– mTv
Nov 14 '18 at 11:17
Possible duplicate of Difference between single and double quotes in Bash
– Ipor Sircer
Nov 14 '18 at 11:30
Not a duplicate. I know the difference. I just want something in between. Think i figured it out myself though.
– mTv
Nov 14 '18 at 11:45
Your "solution" leaves$SCRIPT_VARunquoted, which may break your command if it contains whitespace.
– chepner
Nov 14 '18 at 15:26
Please place answers in Answer blocks. Later, you can accept your own Answer. Also see How does accepting an answer work?
– jww
Nov 14 '18 at 22:54
add a comment |
Why the downvote?
– mTv
Nov 14 '18 at 11:17
Possible duplicate of Difference between single and double quotes in Bash
– Ipor Sircer
Nov 14 '18 at 11:30
Not a duplicate. I know the difference. I just want something in between. Think i figured it out myself though.
– mTv
Nov 14 '18 at 11:45
Your "solution" leaves$SCRIPT_VARunquoted, which may break your command if it contains whitespace.
– chepner
Nov 14 '18 at 15:26
Please place answers in Answer blocks. Later, you can accept your own Answer. Also see How does accepting an answer work?
– jww
Nov 14 '18 at 22:54
Why the downvote?
– mTv
Nov 14 '18 at 11:17
Why the downvote?
– mTv
Nov 14 '18 at 11:17
Possible duplicate of Difference between single and double quotes in Bash
– Ipor Sircer
Nov 14 '18 at 11:30
Possible duplicate of Difference between single and double quotes in Bash
– Ipor Sircer
Nov 14 '18 at 11:30
Not a duplicate. I know the difference. I just want something in between. Think i figured it out myself though.
– mTv
Nov 14 '18 at 11:45
Not a duplicate. I know the difference. I just want something in between. Think i figured it out myself though.
– mTv
Nov 14 '18 at 11:45
Your "solution" leaves
$SCRIPT_VAR unquoted, which may break your command if it contains whitespace.– chepner
Nov 14 '18 at 15:26
Your "solution" leaves
$SCRIPT_VAR unquoted, which may break your command if it contains whitespace.– chepner
Nov 14 '18 at 15:26
Please place answers in Answer blocks. Later, you can accept your own Answer. Also see How does accepting an answer work?
– jww
Nov 14 '18 at 22:54
Please place answers in Answer blocks. Later, you can accept your own Answer. Also see How does accepting an answer work?
– jww
Nov 14 '18 at 22:54
add a comment |
1 Answer
1
active
oldest
votes
You still need to ensure that the expansion of $SCRIPT_VAR is quoted to prevent it from being subjected to word splitting or pathname expansion.
ssh $remote 'docker run -h "$(hostname)"
-e "VARIABLE='"$SCRIPT_VAR"'"
-e "HOST_HOSTNAME=$(hostname)"
...'
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53298904%2fpreventing-expansion-evaluation-of-parameter-in-ssh-command%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
You still need to ensure that the expansion of $SCRIPT_VAR is quoted to prevent it from being subjected to word splitting or pathname expansion.
ssh $remote 'docker run -h "$(hostname)"
-e "VARIABLE='"$SCRIPT_VAR"'"
-e "HOST_HOSTNAME=$(hostname)"
...'
add a comment |
You still need to ensure that the expansion of $SCRIPT_VAR is quoted to prevent it from being subjected to word splitting or pathname expansion.
ssh $remote 'docker run -h "$(hostname)"
-e "VARIABLE='"$SCRIPT_VAR"'"
-e "HOST_HOSTNAME=$(hostname)"
...'
add a comment |
You still need to ensure that the expansion of $SCRIPT_VAR is quoted to prevent it from being subjected to word splitting or pathname expansion.
ssh $remote 'docker run -h "$(hostname)"
-e "VARIABLE='"$SCRIPT_VAR"'"
-e "HOST_HOSTNAME=$(hostname)"
...'
You still need to ensure that the expansion of $SCRIPT_VAR is quoted to prevent it from being subjected to word splitting or pathname expansion.
ssh $remote 'docker run -h "$(hostname)"
-e "VARIABLE='"$SCRIPT_VAR"'"
-e "HOST_HOSTNAME=$(hostname)"
...'
answered Nov 14 '18 at 15:30
chepnerchepner
251k33236331
251k33236331
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53298904%2fpreventing-expansion-evaluation-of-parameter-in-ssh-command%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Why the downvote?
– mTv
Nov 14 '18 at 11:17
Possible duplicate of Difference between single and double quotes in Bash
– Ipor Sircer
Nov 14 '18 at 11:30
Not a duplicate. I know the difference. I just want something in between. Think i figured it out myself though.
– mTv
Nov 14 '18 at 11:45
Your "solution" leaves
$SCRIPT_VARunquoted, which may break your command if it contains whitespace.– chepner
Nov 14 '18 at 15:26
Please place answers in Answer blocks. Later, you can accept your own Answer. Also see How does accepting an answer work?
– jww
Nov 14 '18 at 22:54