Вам будет сложно использовать "первая вторая треть ..." в автоматическом режиме, поскольку они нигде не описаны (по крайней мере, нет стандартный инструмент). Я дам решение с целыми числами:
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"
debug1: Sending command: scp -v -d -t /tmp
[...]
debug2: exec request accepted on channel 0
SCP работает, открывая SSH-соединение с удаленным сервером, а затем вызывая там другую копию программы scp. Два экземпляра scp взаимодействуют друг с другом через ссылку SSH.
Согласно журналу, ваш клиент scp успешно подключился к серверу, прошел аутентификацию и запросил удаленный сервер для вызова scp
для получения файлов. Однако похоже, что удаленный экземпляр scp
на самом деле не запустился правильно. Одна из этих причин представляется вероятной:
В вашем.bashrc,.profile или аналогичном файле на удаленной системе есть что-то, что препятствует запуску scp. Удаленный сервер вызывает запрошенные команды, используя вашу оболочку входа в систему, запустив эквивалент $SHELL -c 'the-requested-command'
. Некоторые вещи, которые вы можете поместить в файлы конфигурации вашей оболочки, не позволят оболочке выполнить команду. Например, если ваш.bashrc выполняет другую оболочку, это помешает работе scp
.
Поскольку вы аутентифицировались с помощью ключа SSH, вероятно, у вас есть запись для ключа SSH в файле .ssh/authorized_keys
удаленной системы. Существует директива с именем ForceCommand
, которую можно поместить в авторизованный файл ключей _. Если ключ подвергается принудительной команде, то любой запрос клиента на запуск программы вызовет принудительную команду вместо команды, запрошенной клиентом.
Программа scp
в удаленной системе может работать со сбоями. Или, возможно, кто-то заменил его другой программой.
Похоже, ваш удаленный сервер настроен так, чтобы задавать вопрос при входе в систему. (Вы можете проверить это с помощью 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