【发布时间】:2017-01-25 22:42:10
【问题描述】:
当命令附加到 ssh 连接时..
ssh -p $port -t root@$ip "echo $SSH_CLIENT; bash"
一旦连接...似乎有空行的回声。
换句话说,只是在服务器上回显了一个新行。
但是如果我手动粘贴
echo $SSH_CLIENT
效果很好。
这是为什么?有什么解决办法?
【问题讨论】:
当命令附加到 ssh 连接时..
ssh -p $port -t root@$ip "echo $SSH_CLIENT; bash"
一旦连接...似乎有空行的回声。
换句话说,只是在服务器上回显了一个新行。
但是如果我手动粘贴
echo $SSH_CLIENT
效果很好。
这是为什么?有什么解决办法?
【问题讨论】:
在ssh 命令运行之前,变量正在本地shell 中展开。由于它在本地 shell 上未设置,因此您什么也得不到,只是echo 在远程 shell 上执行时默认生成的换行符。
您需要以任何常用方式转义SSH_CLIENT 前面的$:
ssh ... 'echo $SSH_CLIENT; bash'
ssh ... "echo \$SSH_CLIENT; bash"
请注意,尽管在这种情况下并非绝对必要,但您应该引用变量扩展名以防止分词和路径名扩展。
【讨论】:
$SSH_CLIENT 在运行ssh 之前首先在本地主机上展开;如果未设置,远程主机将看到命令echo; bash。使用单引号,以便 remote shell 看到参数:
ssh -p $port -t root@$ip 'echo $SSH_CLIENT; bash'
【讨论】: