scp没有给出这样的文件或目录

时间:2018-04-28 12:32:18

标签: kubernetes sh scp sshpass

我在这个容器中拥有的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

2 个答案:

答案 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程序为每个文件执行本地到本地副本。

相关问题