Я пытаюсь записать сценарий, который использовал бы ssh сессию, чтобы сделать grep на огромном файле журнала, кошка ouput во временный файл и scp временный файл назад к клиентской машине:
ssh user@server grep pattern logfile.log | cat > temp.txt
scp user@server:/temp.txt .
Что лучший способ состоит в том, чтобы записать такому действию в сценарии?
Вы можете сделать это за один шаг:
ssh user@server "grep pattern logfile.log" > temp.txt
Это приведет к ssh
удаленному хосту, выдаче grep pattern logfile.log
на этом удаленном хосте и перенаправлению вывода всей команды ssh
на ваш локальный файл temp.txt
.
В этом случае цитирование имеет большое значение, т. Е. Важно, чтобы вы поместили цитаты "
. Например,
ssh user@server "grep pattern logfile.log > temp.txt"
записывает вывод в файл на удаленном хосте (не то, что вам нужно), потому что он выполняет полный "grep pattern logfile.log > temp.txt"
для этого хост. Но в первом случае только команда запускается удаленно, и перенаправление происходит на вашем локальном хосте.
Прежде всего, вам не нужно передавать команду на cat
, просто перенаправьте ее:
grep pattern logfile > mylog.log
Также temp.txt
будет создано на вашем компьютере, а не на сервере, чтобы создать его на сервере, вы должны заключить в кавычки команду:
ssh user@server "grep pattern logfile | whatever > temp.log"
Я бы пошел с:
ssh user@server grep pattern logfile.txt > mylog.log
Он будет запускать grep pattern
на logfile.txt
, затем создает mylog.log
на моей машине.