Я пытаюсь написать сценарий, который grep для чего-то на нескольких серверах и добавляет вывод всех из них в один файл. Серверы защищены паролем. Я использую ожидание входа на серверы и передачу команды grep, но я надеюсь получить результат каждого из них, чтобы попасть в один файл.Перенаправить вывод grep в файл на сервере
Вот краткий обзор того, что я хочу сделать:
spawn ssh [email protected] expect "password: " send "PASSWORD\r" expect "$ " send "grep <something> /some/log/file >> file.txt" expect "$ " send "exit\r"
... затем продолжать делать это в десятки более серверов с выводом команды Grep добавляющим к file.txt каждый раз. Я не против, где файл file.txt на самом деле. Это может быть на моем локальном компьютере или на любом из серверов.
Лучшее, что я придумал, было бы поместить каждый из них в файл на сервере, на котором выполняется grep, а затем scp все эти файлы на локальные и добавив их все. Это кажется невероятно расточительным, хотя, поэтому я ищу способ отправить вывод на сервер или локально с сервера.
Это отлично работает, не могли бы вы объяснить, почему вы используете [open foo.log a], а не только foo.log? Кроме того, в чем смысл закрытия $ fh? –