Mientras escribo un comando, este comando se autenticará con un servidor remoto y hará muchas cosas. Si pasa, me dará un shell bash con su entorno.
Mi objetivo es guardar estos registros que se imprimen en mi terminal para futuras inspecciones. Digamos que mi comando llamó target
.
Mientras escribo target, arroja el siguiente mensaje.
Version: V1.94
Options:
Date: Thu Jun 6 17:18:39 2019
OS: CentOS release 6.10 (Final)
....
[DEV]target>
Observe que la última línea implica que ingresé al entorno de shell de destino.
Lo he intentado echo $(target) > output.log
, pero se bloqueará hasta que escriba CTRL+C
.
Entorno: CentOS 6.10
Actualizar
Digamos que quiero que este script se ejecute automáticamente cuando activo mi máquina. Sin embargo, seguirá bloqueado mientras ejecuta el comando de destino porque entró en un shell y no salió.
#!/bin/bash
script -c target output.log
FILENAMEME=output.log
aws s3 cp "$FILENAME" s3://logs/
Respuesta1
Quizás quieras probar script
:
script -c target output.log
Esto iniciaría el comando target
y guardaría una transcripción de toda la sesión, hasta que target
finalice, en el archivo output.log
. Si el comando (tu target
) tiene varias palabras, cita el comando completo.
Consulte el manual de script
( man script
).
Respuesta2
Si no puede cambiar el target
comando en sí, esto debería resultar útil:
target | tee output.bak
output.bak
contendrá una copia de toda la salida (solo salida estándar en este ejemplo), por lo que tendrás que recortarla si quieres solo la información inicial.