Вывод 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 на моей машине.