найти файлы на удаленной машине - PullRequest
0 голосов
/ 21 марта 2012

Привет, я пытаюсь выполнить следующую команду на удаленном компьютере, как мне сделать это

ssh login.com find /nfs/repo/ -name ".user_repo.log" | \
  xargs cat | awk '{$NF=""; print $0}' |               \
  sed "1i Owner RepoName CreatedDate" | column -t

Я получаю следующее сообщение об ошибке

 cat: /nfs/repo/new1/info/.user_repo.log: No such file or directory
 cat: /nfs/repo/new2/info/.user_repo.log: No such file or directory

Команда cat пытается найти файл в локальной системе, в то время как эти файлы присутствуют на удаленном компьютере. Как мне обработать это

1 Ответ

4 голосов
/ 21 марта 2012

Если вы делаете:

ssh host command1 | command2

Тогда оболочка сломается на конвейере, так что «ssh host command1» будет запущен как одна команда (т. Е. Удаленно), а затем «command2» будет запущен как другая команда (т. Е. Локально). Вы можете принудительно выполнить все команды для удаленного запуска, заключенные в кавычки:

ssh host "command1 | command2"

Обратите внимание, поскольку в команде уже есть кавычки, вам, возможно, придется проявить изобретательность, выбрав экранирование.

Или вы можете поместить все эти команды в короткий скрипт оболочки, а затем просто запустить скрипт:

ssh host myscript.sh
...