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 ~/.profile script -t -f -q 2>$USER.time -a $USER.his
應用:
1、演示教學
第一個命令框
其他命令框
可以實現實時同步演示
2、服務器安全審計
直接操作線上的服務器有很大隱患,所以一般都是通過登錄跳板機,然后連接線上服務器,跳板機可以訪問控制和安全審計,查看記錄每個人對線上服務器的操作
用戶家目錄下,修改環境變量,使得用戶登錄就會觸發錄像
vi ~/.profile script -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)和退出用戶