ID:coding3min
今天看到一個超級叼 的linux命令,可以完整記錄屏幕上的命令與輸出結果。
有人問這有什麼叼的,不就是保存歷史操作記錄嗎?我看看日誌也能看出來。
不不不,我要說的“完整記錄”包括第幾秒執行什麼命令,就像真的有人在操作一樣!放視屏一樣的播放出來,還可以調整播放速度,放慢、加快、想調幾倍速就調幾倍速!
比開通了會員還爽好嗎!
更爽的是自己的服務器,誰想登陸操作直接就被監視起來,一舉一動看的清清楚楚,是不是很過癮!!
一般來說,這次用到的script 和/>
錄播屏幕操作
錄製
/>
執行完這個命令,接下來的任何操作都會被記錄。
其中的time.file是時序記錄文件,記錄了幾秒執行的命令;scriptfile是命令執行記錄文件,記錄下執行是哪些命令,這兩個文件名稱都可以自定義。
加上-q, - -quiet 參數可以使script命令以靜默模式運行,不顯示script啟動和exit的命令,用戶可以完全察覺不到在錄屏。
像這樣:
/>
要停下來,只用按下按下組合鍵 Ctrl+D 結束錄製,執行exit命令也行。
$ exit
有錄製就有播放,就像錄視頻一樣,執行下面這個命令即可,時序文件在前,命令文件在後
scriptreplay time.file/>
添加這個參數-d, –divisor number 可以調整播放速度的倍數(可以是小數:放慢)。
scriptfile文件記錄了我每間隔1秒執行一個date命令的操作,現在加速10倍來播放看看效果(可惜有的版本scriptreplay命令沒有-d這個參數):
同步演示
-f, - -flush 每次操作後都立即刷新緩存。如果不設置這個選項,則不會實時寫入文件,這個功能
使用端:
script -f demo
演示端:
scriptreplay -f demo
但是很遺憾,可能因為版本問題,我的scriptreplay沒有-f參數。
沒關係,因為實時寫入文件裡的,我們拿出平時看日誌常用的tail -f命令,直接在演示端tail -f demo即可
錄製腳本執行過程
參數-c, - -command 可以直接執行命令,而非是交互式的shell,可以直接傳入一個腳本,像這樣:
$/>123
234
345
$ cat file.out
Script started on Fri 28 Jun 2019 07:38:55 PM CST
123
234
345
但是我覺得這個功能有點雞肋,只能記錄下輸出不能記錄執行了哪些命令和鹹魚有什麼區別?
不要謊,那讓我們來感受點牛逼的。
自動觸發監控用戶登陸的操作與實時監控
有時候某個人偷偷遠程訪問了你的系統,或者運維人員遠程操作了一些東西,我們可以設置自動記錄下這個人在系統上做了什麼事情,是誰闖的禍,該誰背的鍋,一目瞭然!
這個時候就只要讓script命令在登錄時自動運行,我們可以把它添加進shell環境配置文件中。
這樣在出現什麼誤操作之後,就可以在排查的時候查到歷史記錄。
mkdir -p /var/log/user_record
vi /etc/profile
在文件末尾追加
# 添加登陸時自動記錄
script -t -f -q 2>/var/log/user_record/$USER-$UID-`date +%Y%m%d%H%M%S`.time -a /var/log/user_record/$USER-$UID-`date +%Y%m%d%H%M%S`.his
if [ "$SHLVL" = 1 ]; then
exit
fi
在這裡我已經提前添加到腳本里了,後邊是監控端,見演示
暢想幾個場景:
- 通過錄制終端記錄,來製作一個命令行技巧視頻
- 直接分享幾十k的記錄文件給朋友,就可以讓好友體驗到站在你旁邊看你操作的感覺
- 大神來面前幫忙,這時候根本來不及打開錄屏軟件,還容易遭大神的反感;一頓操作猛如虎,菜鳥什麼都記不住好嗎(哭唧唧)。但有了這個工具,一秒開啟記錄,回去慢慢看唄,還能慢放,多爽。
- 完整記錄腳本的執行步驟與輸出,沒有什麼比完整輸出的腳本更能排查操作,特別是不能debug的shell。
- 監控登陸用戶的一舉一動,再也不怕找不到人背鍋了,但是自己的鍋也就甩不出去了,發現自己的鍋 千萬別告訴別人!
- 什麼?你還想用這個來監聽輸入的密碼?
閱讀更多 馬哥Linux 的文章