Вывод scp из удаленного grep обратно на мою машину в сценарии
Я пытаюсь написать сценарий, который будет использовать сессию ssh для выполнения grep в огромном лог-файле, отразить выходные данные во временный файл и скопировать временный файл обратно на клиентский компьютер:
ssh user@server grep pattern logfile.log | cat > temp.txt
scp user@server:/temp.txt .
Каков наилучший способ написать такое действие в сценарии?
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"
на этом хосте. Но в первом случае только команда запускается удаленно, и перенаправление происходит на вашем локальном хосте.
Прежде всего, вам не нужно передавать команду 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
на моей машине.