scp не работает. Поиск причины

Вам будет сложно использовать "первая вторая треть ..." в автоматическом режиме, поскольку они нигде не описаны (по крайней мере, нет стандартный инструмент). Я дам решение с целыми числами:

n=$( grep -c '^Mario$' file )
for (( i=1 ; i<=$n ; i++ )) ; do
  sed -i "1,/^Mario$/s/^Mario$/$i&/" file
done

вывод:

Hello world
types="program"
1Mario
types="Game"
Hello world
types="program"
2Mario
types="Game"
1
06.12.2018, 14:00
2 ответа
debug1: Sending command: scp -v -d -t /tmp
[...]
debug2: exec request accepted on channel 0

SCP работает, открывая SSH-соединение с удаленным сервером, а затем вызывая там другую копию программы scp. Два экземпляра scp взаимодействуют друг с другом через ссылку SSH.

Согласно журналу, ваш клиент scp успешно подключился к серверу, прошел аутентификацию и запросил удаленный сервер для вызова scpдля получения файлов. Однако похоже, что удаленный экземпляр scpна самом деле не запустился правильно. Одна из этих причин представляется вероятной:

  1. В вашем.bashrc,.profile или аналогичном файле на удаленной системе есть что-то, что препятствует запуску scp. Удаленный сервер вызывает запрошенные команды, используя вашу оболочку входа в систему, запустив эквивалент $SHELL -c 'the-requested-command'. Некоторые вещи, которые вы можете поместить в файлы конфигурации вашей оболочки, не позволят оболочке выполнить команду. Например, если ваш.bashrc выполняет другую оболочку, это помешает работе scp.

  2. Поскольку вы аутентифицировались с помощью ключа SSH, вероятно, у вас есть запись для ключа SSH в файле .ssh/authorized_keysудаленной системы. Существует директива с именем ForceCommand, которую можно поместить в авторизованный файл ключей _. Если ключ подвергается принудительной команде, то любой запрос клиента на запуск программы вызовет принудительную команду вместо команды, запрошенной клиентом.

  3. Программа scpв удаленной системе может работать со сбоями. Или, возможно, кто-то заменил его другой программой.

5
27.01.2020, 23:32

Похоже, ваш удаленный сервер настроен так, чтобы задавать вопрос при входе в систему. (Вы можете проверить это с помощью ssh user@serverи посмотреть, задают ли вам вопрос. )Этот код необходимо изменить, чтобы задавать вопросы только при работе в интерактивной оболочке.

Например, если вы используете bash, то в.bashrc:

read -p "What terminal type: " termtype
#... other code that uses $termtype...

вместо этого вам следует подумать о чем-то подобном:

if [[ -n "$PS1" ]]
then
    read -p "What terminal type: " termtype
    #... other code that uses $termtype...
fi
2
27.01.2020, 23:32

Теги

Похожие вопросы