1

我在这个容器中的 Linux 如下图所示:

root@sbolla-6c7b7589d8-5c2rb:/usr/safenet/lunaclient# uname -a
Linux sbolla-6c7b7589d8-5c2rb 3.10.0-693.5.2.el7.x86_64 #1 SMP Fri Oct 20 20:32:50 UTC 2017 x86_64 GNU/Linux
root@sbolla-6c7b7589d8-5c2rb:/usr/safenet/lunaclient#

我正在尝试使用 sshpass 命令执行一个简单的 scp,如下所示并遇到此错误。任何想法都非常感谢。请注意,我尝试了 scp 而不是 cp。事实上,这一行是在一个脚本中,我在 linux 命令行上尝试过,我得到了这个错误。我还尝试使用 ' 和 " 和 \ 以及所有组合来转义环境变量,但这似乎没有帮助。

root@sbolla-6c7b7589d8-5c2rb:/usr/safenet/lunaclient/bin# sshpass -p '$H_PASSWORD' scp -v  $H_USERNAME@$H_HOSTNAME:server.pem .
Executing: cp '--' 'admin@abc-def.brilliant.local' '.'
cp: cannot stat 'admin@abc-def.brilliant.local': No such file or directory
Executing: cp '--' ':server.pem' '.'
cp: cannot stat ':server.pem': No such file or directory
root@sbolla-6c7b7589d8-5c2rb:/usr/safenet/lunaclient/bin#

如果我明确地使用这个命令,我可以让它工作,不知道为什么。请不要将这些输出中的主机名编辑为一些愚蠢的名称

root@sbolla-6c7b7589d8-5c2rb:/usr/safenet/lunaclient#   sshpass -p $HSM_PASSWORD scp admin@grs-defcon.brilliant.local:server.pem .

ls -lia 
root@sbolla-6c7b7589d8-5c2rb:/usr/safenet/lunaclient# ls -l | grep ser
-rw-r--r-- 1 root root 1172 Apr 28 12:23 server.pem
root@sbolla-6c7b7589d8-5c2rb:/usr/safenet/lunaclient# date
Sat Apr 28 12:24:29 UTC 2018
root@sbolla-6c7b7589d8-5c2rb:/usr/safenet/lunaclient#

我已经尝试了下面提供的答案,但没有奏效

sshpass -p "$H_PASSWORD" scp -v $H_USERNAME@${H_HOSTNAME}:server.pem .

我注意到的另一件事是,如果我在这个容器上执行 env,我会在环境变量中看到一个额外的行,这可能是一个问题。看看这个环境如何显示。请注意,我没有故意输入一行,当我输入 env 命令时,我看到 H_HOSTNAME 和 H_PARTITION 旁边的行很奇怪 H_PARTITION=Operator

MYSQL_PORT=tcp://11.123.113.242:3306
LUNAHS=TRUE
H_HOSTNAME=grs-defcon.brilliant.local

ROOT_PORT_443_TCP_PORT=443
MYSQL_PORT_3306_TCP_ADDR=11.456.231.242
4

2 回答 2

2

看起来像 2 个外壳扩展问题。尝试:

sshpass -p "$H_PASSWORD" scp -v $H_USERNAME@${H_HOSTNAME}:server.pem .
于 2018-04-28T13:23:45.053 回答
1
# sshpass -p '$H_PASSWORD' scp -v  $H_USERNAME@$H_HOSTNAME:server.pem .
Executing: cp '--' 'admin@abc-def.brilliant.local' '.'
cp: cannot stat 'admin@abc-def.brilliant.local': No such file or directory
Executing: cp '--' ':server.pem' '.'

你的 shell 变量H_HOSTNAME最后有一些空格。它导致 scp 命令是这样的:

scp -v someuser@somehost :server.pem .

scp 将此解释为意味着两个名为someuser@somehost和的本地文件:server.pem应该被复制到本地目录.。它试图通过调用cp程序对每个文件进行本地到本地的复制。

于 2018-04-29T22:18:38.360 回答