【问题标题】:Passing shell variables to ssh将 shell 变量传递给 ssh
【发布时间】:2013-03-28 03:55:36
【问题描述】:

我阅读了有关在远程 ssh 中传递变量的其他帖子,但这些解决方案似乎对我不起作用。

这是我的情况:我在整个 shell 脚本(在本地机器上)中填充变量的值,然后通过 ssh 在 另一个 系统上使用这些值。我理解为什么这不起作用,但我想找到一种通过 ssh 在另一个系统上使用本地 shell 中的值的方法。

BUILD_SERVER="my_server"
ANOTHER_SERVER="my_server2"
ssh $USERNAME@$BUILD_SERVER << 'ENDSSH'

echo "$BUILD_SERVER"
echo "$ANOTHER_SERVER"

ENDSSH

当我运行此代码时,这些变量为空。有没有办法将值传递给 ssh?

【问题讨论】:

    标签: bash shell variables ssh


    【解决方案1】:

    我想通了。在我正在执行以下操作的行上:

    ssh $USERNAME@$BUILD_SERVER << 'ENDSSH'
    

    我删除了单引号,它现在解释允许我的局部变量。如果我想在远程服务器上使用一个变量,我只需用 "\"

    转义它们
    ssh $USERNAME@$BUILD_SERVER << ENDSSH
    
    echo $BUILD_SERVER     # echos the local server variable
    LOCAL_SERVER="local_server"
    
    echo \$LOCAL_SERVER    # echos the remote server variable
    
    ENDSSH
    

    【讨论】:

    • 那么本地是我的本地机器而远程服务器?我有一个类似的问题:ssh -p $deployServerPort -t $deployServerUser@$deployServerIp "sudo bash \"$deployShellScript\" 'true'" 我的问题是,String: true 无法识别。我想将true 传递给$deployShellScript 中的脚本。
    • @AndiGiga 在我的解决方案中,$LOCAL_SERVER 变量在您的本地机器上,或者在调用 ssh 的机器上,\$LOCAL_SERVER 是在远程机器上扩展的变量。我认为你也需要逃避真实。 (例如\"true\"
    • 我也试图逃避它,但我的脚本没有接受它。但现在我明白了为什么,这是脚本中的错误。还是谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-02
    • 2013-05-04
    • 1970-01-01
    • 2015-01-08
    • 2017-03-06
    • 2017-05-24
    • 1970-01-01
    相关资源
    最近更新 更多