script 是一個神奇命令,script 能夠將終端的會話過程錄制下來,然後使用 scriptreplay 就可以將其錄制的結果播放給他人觀看。script 的好處就在於你在終端中的所有操作、敲過的命令和打印出的結果它都可以原原本本地進行錄制。可以應用於教學、演示、審計。
一般來說,script 和 scriptreplay 在 Linux 發行版中都有默認安裝。
script -t 2>demo.time -a demo.his 開始錄像,ctrl+d或者exit結束
scriptreplay demo.time demo.his 回放
兩個配置文件被當做script命令的參數。這兩個文件可以隨便命名,這裡用demo.time和demo.his。其中demo.time用於存儲時序信息,描述每一個指令在何時運行;demo.his用於存儲命令信息輸出。-t選項用於將時序數據導入stderr。2>用於stderr重定向到demo.time。
參數:
-t 指明輸出錄制的時間數據
-f 如果需要在輸出到日志文件的同時,也可以查看日志文件的內容,可以使用 -f 參數。PS:可以用於教學,兩個命令行接-f可以實時演示
-a 輸出錄制的文件,在現有內容上追加新的內容
-q 可以使script命令以靜默模式運行
利用script記錄某人行為
vi ~/.profilescript -t -f -q 2>$USER.time -a $USER.his
應用:
1、演示教學
第一個命令框
script -f demo
其他命令框
scriptreplay -f demo
可以實現實時同步演示
2、服務器安全審計
直接操作線上的服務器有很大隱患,所以一般都是通過登錄跳板機,然後連接線上服務器,跳板機可以訪問控制和安全審計,查看記錄每個人對線上服務器的操作
用戶家目錄下,修改環境變量,使得用戶登錄就會觸發錄像
vi ~/.profilescript -t -f -q 2>/wow/$USER-$UID-`date +%Y%m%d%H%M%S`.time -a /wow/$USER-$UID-`date +%Y%m%d%H%M%S`.his
這樣搞完後,發現有一個問題是每次退出,我習慣Ctrl+D,然後按第一遍停止錄像,第二遍才能用戶退出,如何解決在後面添加
if [ "$SHLVL" = 1 ]; then exit fi
這樣就可以一遍Ctrl+D停止錄像(exit)和退出用戶。
播放
必須得時許信息在前,命令信息在後。你可能讓你的工程師或者某個人遠程訪問你的系統,要確保你的工程師正在干正確的事,你可以記錄下他在你系統上的所作所為。要讓script命令在登錄時自動運行,我們可以把它添加進shell環境配置文件中。如果你正在使用bash shell,把這一行加進你 的bash環境配置文件中。
/usr/bin/script -qa /usr/local/script/log_record_script然後保存。下次他登錄進你的系統時,script命令就會自動運行,並把日志記錄進/usr/local/script/logrecordscript。
-q選項可以讓scirpt命令以靜默模式運行,登錄進來的用戶不會知道script命令已經運行了。而-a選項將會讓記錄附加到文件中,而不會擦除先前的記錄。
如果不使用-q選項,那麼當用戶登錄進來時,他會收到像下圖中這樣的通知。