scp не предоставляет такой файл или каталог - PullRequest
0 голосов
/ 28 апреля 2018

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#

Я пытаюсь выполнить простой scp с помощью команды sshpass, как показано ниже, и столкнулся с этой ошибкой. любые идеи действительно ценятся. Обратите внимание, что я пробовал scp, а не cp. Infact эта строка находится в сценарии, я попробовал это в командной строке 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. Обратите внимание, что я не ввел строку специально, когда я набираю команду 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 голосов
/ 30 апреля 2018
# 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' '.'

Ваша переменная оболочки H_HOSTNAME имеет пробел в конце. Это заставляет команду scp выглядеть примерно так:

scp -v someuser@somehost :server.pem .

Scp интерпретирует это как означающее, что два локальных файла с именами someuser@somehost и :server.pem должны быть скопированы в локальный каталог .. Он пытается выполнить локальное копирование для каждого файла, вызывая программу cp.

0 голосов
/ 28 апреля 2018

Похоже, 2 проблемы расширения оболочки. Попробуйте:

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