Пока я печатаю команду, эта команда аутентифицируется на удаленном сервере и делает кучу вещей. Если пройдет, она даст мне оболочку bash с ее окружением.
Моя цель — сохранить эти журналы, которые выводятся на мой терминал для будущей проверки. Допустим, моя команда называется target
.
При вводе target выдается следующее сообщение.
Version: V1.94
Options:
Date: Thu Jun 6 17:18:39 2019
OS: CentOS release 6.10 (Final)
....
[DEV]target>
Обратите внимание, что последняя строка подразумевает, что я вошел в целевую среду оболочки.
Я пробовал echo $(target) > output.log
, но он зависает, пока я не наберу текст CTRL+C
.
Среда: CentOS 6.10
Обновлять
Допустим, я хочу, чтобы этот скрипт автоматически запускался при активации моей машины. Однако он все равно зависнет при выполнении целевой команды, поскольку вошел в оболочку и не вышел.
#!/bin/bash
script -c target output.log
FILENAMEME=output.log
aws s3 cp "$FILENAME" s3://logs/
решение1
Вы можете попробовать script
:
script -c target output.log
Это запустит команду target
и сохранит расшифровку всего сеанса, пока target
не будет завершена, в файле output.log
. Если команда (ваша target
) состоит из нескольких слов, укажите полную команду.
См. руководство для script
( man script
).
решение2
Если вы не можете изменить target
саму команду, то это должно быть полезно:
target | tee output.bak
output.bak
будет содержать копию всех выходных данных (в этом примере только stdout), поэтому вам придется обрезать его, если вам нужна только начальная информация.