首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Linux script 命令詳解:終端會話錄製、回放、教學演示與安全審計實戰

     編輯:Java 綜合教學

Linux script 命令詳解:終端會話錄製、回放、教學演示與安全審計實戰

script 是 Linux 系統自帶的「終端錄像機」,能完整記錄終端會話的所有輸入輸出、命令、輸出結果、時間戳,配合 scriptreplay 實現精確回放。廣泛用於教學演示、操作審計、故障復現、文檔生成。本文系統講解參數、實戰場景、自動化部署與避坑指南。

核心參數速查

基礎用法

1. 錄製會話

# 開始錄製,時間存 demo.time,內容存 demo.his
script -t 2>demo.time -a demo.his
# 正常操作終端...
# 結束:Ctrl+D 或輸入 exit

2. 回放會話

scriptreplay demo.time demo.his
# 必須:時間文件在前,內容文件在後

進階場景實戰

場景一:多終端實時同步教學/演示

# 講師終端(錄製並實時刷新)
script -f demo.session

# 學生終端(實時回放)
scriptreplay -f demo.session
# 效果:講師敲鍵盤、輸出結果,學生終端毫秒級同步顯示

場景二:跳板機/堡垒機安全審計(用戶登錄自動錄製)

編輯用戶 ~/.bash_profile 或 ~/.bashrc,在末尾添加:

# 自動錄製,文件名含用戶名、UID、時間戳,靜默、追加、實時刷新
script -t -f -q 2>/var/log/script/$USER-$UID-$(date +%Y%m%d%H%M%S).time \
           -a /var/log/script/$USER-$UID-$(date +%Y%m%d%H%M%S).his

# 解決 Ctrl+D 雙重退出問題(SHLVL=1 為登錄 Shell)
if [ "$SHLVL" = 1 ]; then exit; fi

效果:用戶 SSH 登錄瞬間開始錄製,退出自動結束,日志集中存放於 /var/log/script/,不可篡改(需配置目錄權限)。

場景三:遠程協助/外包人員操作留痕

# 在授權 SSH 會話中手動啟動
/usr/bin/script -qa /var/log/audit/remote_$(date +%s).log
# -q 靜默,-a 追加,對方無感知

回放技巧與常見問題

  1. 加速回放:scriptreplay -d 0.5 demo.time demo.his(0.5 倍速,數值越小越快)。
  2. 只看命令不看輸出:grep -v "^$" demo.his | grep -E "^[^ ]" 簡易過濾,或解析 timing 文件提取命令行。
  3. 亂碼/顏色控制字符:錄製時終端輸出 ANSI 色碼,回放時若終端不支持會顯示亂碼。建議錄製前 export TERM=dumb 或回放時用 cat -v 查看原始碼。
  4. 大文件性能:長時間會話生成 GB 級日志,回放緩慢。可定期 split 切分或用 asciinema(更現代、支持 Web 回放)。

替代方案對比

參數作用典型場景
-t將時間數據輸出到 stderr(需重定向到文件)回放必需,記錄每個命令的時間間隔
-f刷新輸出(實時寫入文件)多終端實時同步演示、審計實時落盤
-a追加模式(不覆蓋現有文件)長期審計、多次會話合併記錄
-q靜默模式(不提示 "Script started/ended")隱蔽審計、自動化腳本
工具優點缺點適用場景
script/scriptreplay系統自帶、無依賴、標準格式無壓縮、回放不可暫停/跳轉、色碼問題審計、簡單教學、腳本化
asciinemaWeb 回放、可暫停/跳轉、壓縮、可嵌入網頁需安裝 Python、依賴網絡上傳(可本地)技術分享、文檔、CI/CD 展示
ttyrec/ttyplay輕量、C 語言、支持壓縮需編譯安裝、格式非標準嵌入式、極簡環境
sudosh專為 sudo 審計設計、集中日志維護較少、配置複雜企業級特權審計

最佳實踐清單

  • ✅ 審計場景強制使用 -t -f -q -a 組合:時間戳、實時落盤、靜默、追加。
  • ✅ 日志目錄設置 chattr +a(僅追加屬性)防止刪除篡改。
  • ✅ 定期備份日志到異地存儲(WORM 存儲更佳)。
  • ✅ 教學演示優先用 asciinema,體驗更好、易分享。
  • ❌ 避免在高並發生產服務器長期開啟 -f,磁盤 IO 可能成為瓶頸。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved