入力時にシェルログをエコーし​​、終了する

入力時にシェルログをエコーし​​、終了する

コマンドを入力すると、このコマンドはリモート サーバーで認証し、さまざまな処理を実行します。成功すると、その環境を持つ 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 のみ) が含まれるため、初期情報のみが必要な場合はトリミングする必要があります。

関連情報