我在这个容器中拥有的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 =操作员
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
答案 0 :(得分:2)
看起来有2个shell扩展问题。尝试:
sshpass -p "$H_PASSWORD" scp -v $H_USERNAME@${H_HOSTNAME}:server.pem .
答案 1 :(得分: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
程序为每个文件执行本地到本地副本。