вывод scp от удаленного grep назад к моей машине в сценарии

Я пытаюсь записать сценарий, который использовал бы ssh сессию, чтобы сделать grep на огромном файле журнала, кошка ouput во временный файл и scp временный файл назад к клиентской машине:

ssh user@server  grep pattern logfile.log | cat > temp.txt
scp user@server:/temp.txt .

Что лучший способ состоит в том, чтобы записать такому действию в сценарии?

0
задан 7 September 2018 в 09:18

2 ответа

Вы можете сделать это за один шаг:

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" для этого хост. Но в первом случае только команда запускается удаленно, и перенаправление происходит на вашем локальном хосте.

3
ответ дан 28 October 2019 в 00:30

Прежде всего, вам не нужно передавать команду на 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 на моей машине.

3
ответ дан 28 October 2019 в 00:30

Другие вопросы по тегам:

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