Preventing expansion/evaluation of parameter in ssh command










-1















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?










share|improve this question
























  • 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_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















-1















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?










share|improve this question
























  • 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_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













-1












-1








-1








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?










share|improve this question
















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






share|improve this question















share|improve this question













share|improve this question




share|improve this question








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_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

















  • 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_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
















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












1 Answer
1






active

oldest

votes


















1














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)"
...'





share|improve this answer






















    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
    );



    );













    draft saved

    draft discarded


















    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









    1














    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)"
    ...'





    share|improve this answer



























      1














      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)"
      ...'





      share|improve this answer

























        1












        1








        1







        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)"
        ...'





        share|improve this answer













        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)"
        ...'






        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Nov 14 '18 at 15:30









        chepnerchepner

        251k33236331




        251k33236331





























            draft saved

            draft discarded
















































            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.




            draft saved


            draft discarded














            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





















































            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







            這個網誌中的熱門文章

            What does pagestruct do in Eviews?

            Dutch intervention in Lombok and Karangasem

            Channel Islands