【问题标题】:ssh - echo $SSH_CLIENT returns empty when executed on initial connectssh - echo $SSH_CLIENT 在初始连接时执行时返回空
【发布时间】:2017-01-25 22:42:10
【问题描述】:

当命令附加到 ssh 连接时..

ssh -p $port -t root@$ip "echo $SSH_CLIENT; bash"

一旦连接...似乎有空行的回声。
换句话说,只是在服务器上回显了一个新行。

但是如果我手动粘贴

 echo $SSH_CLIENT

效果很好。

这是为什么?有什么解决办法?

【问题讨论】:

    标签: bash shell ssh


    【解决方案1】:

    ssh 命令运行之前,变量正在本地shell 中展开。由于它在本地 shell 上未设置,因此您什么也得不到,只是echo 在远程 shell 上执行时默认生成的换行符。

    您需要以任何常用方式转义SSH_CLIENT 前面的$

    ssh ... 'echo $SSH_CLIENT; bash'
    ssh ... "echo \$SSH_CLIENT; bash"
    

    请注意,尽管在这种情况下并非绝对必要,但您应该引用变量扩展名以防止分词和路径名扩展。

    【讨论】:

      【解决方案2】:

      $SSH_CLIENT 在运行ssh 之前首先在本地主机上展开;如果未设置,远程主机将看到命令echo; bash。使用单引号,以便 remote shell 看到参数:

      ssh -p $port -t root@$ip 'echo $SSH_CLIENT; bash'
      

      【讨论】:

        猜你喜欢
        • 2018-03-24
        • 2017-06-11
        • 2020-07-02
        • 2017-04-26
        • 2015-07-27
        • 2021-12-31
        • 1970-01-01
        • 2015-08-03
        • 2013-09-07
        相关资源
        最近更新 更多