當我鍵入命令時,該命令將透過遠端伺服器進行身份驗證並執行一系列操作。如果通過,它會給我一個 bash shell 及其環境。
我的目標是保存這些列印到我的終端中的日誌以供將來檢查。假設我的命令名為target
.
當我輸入 target 時,它會拋出以下訊息。
Version: V1.94
Options:
Date: Thu Jun 6 17:18:39 2019
OS: CentOS release 6.10 (Final)
....
[DEV]target>
請注意最後一行暗示我已進入目標 shell 環境。
我已經嘗試過echo $(target) > output.log
,但它會卡住,直到我打字CTRL+C
。
環境:CentOS 6.10
更新
假設我想讓這個腳本在啟動我的機器時自動運行。但是,在執行目標命令時仍然會卡住,因為它進入了 shell 並且沒有離開。
#!/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
將包含所有輸出的副本(在本例中只是標準輸出),因此如果您只想要初始訊息,則必須修剪它。