有時候演示或者為了更好地說明終端的操作過程,需要錄制終端的操作,使用錄屏軟件固然可以,但是缺點也明顯,錄制視頻不僅體積大、需要操作界面,而且視頻錄制是按照一比一的時間錄制,瀏覽器來體驗很不好。
這時候就需要專門的終端錄制工具了,本文總結(jié)了幾款個人認(rèn)為不錯的終端錄制工具。歡迎補充。
本文介紹的工具有:
Asciinema、Teleport、TermRecord、Showterm
1. Asciinema
Asciinema 是一個用 ClojureScript 編寫的開源命令行錄屏工具。
這個工具相信大家經(jīng)??吹剿腖ogo,很多開源項目網(wǎng)頁的操作介紹都是使用這個工具錄制的。
1.1 安裝
安裝沒什么大問題,大部分發(fā)行版的軟件倉庫都收錄了這個工具。
通用安裝(pip):
sudo pip3 install asciinema
從 Github 下載最新版:
git clone https://github.com/asciinema/asciinema.git
cd asciinema
python3 -m asciinema --version
macOS:
brew install asciinema
Arch Linux
sudo pacman -S asciinema
Debian
sudo apt install asciinema
Fedora
sudo dnf install asciinema
Ubuntu
sudo apt-add-repository ppa:zanchey/asciinema
sudo apt-get update
sudo apt-get install asciinema
1.2 錄制
asciinema rec
使用 exit 或者 Ctrl+D 快捷鍵結(jié)束錄制。它會在結(jié)束錄制的時候提示,如果要上傳的話,敲回車。上傳之后,Asciinema 會給出一個網(wǎng)址,例如:
https://asciinema.org/a/44nu2i2ieywlmqq9wx5sk5k1e
要想嵌入到自己的網(wǎng)頁上也沒有問題:
<script type="text/javascript" src="https://asciinema.org/a/44nu2i2ieywlmqq9wx5sk5k1e.js" id="asciicast-44nu2i2ieywlmqq9wx5sk5k1e" async></script>
效果如下:

總結(jié):
Asciinema 總得來說是非常優(yōu)秀的終端錄制工具,它使用 Json 來存儲操作過程,通過解析 Json 文件來還原操作流程,體積小。
此外 Asciinema 比較注重社區(qū),因此有賬號、上傳等功能,一方面便于分享另一方面也帶來一些麻煩,例如要打開它的網(wǎng)站才能看到終端錄制過程。大大的Logo似乎也沒有定制的功能。
個人認(rèn)為比較不好的就是 Asciinema 按照一比一時間比例播放,熟悉終端的同學(xué)都知道終端操作不可能一直行云流水,有時候會有一點停頓,錄制工具把這些時間也錄制播放出來很影響觀眾體驗。
2. Teleport
其實 Teleport 并非終端錄制工具,終端錄制只是其豐富而且強大功能中的一個。
Teleport 是一款可以替代 SSH 工具的新一代服務(wù)器集群管理工具,它不僅可以同時管理大量服務(wù)器還可以作為一個終端錄制工具,它提供了一個直觀的 Web 界面來顯示終端,也就是說你可以在瀏覽器操作服務(wù)器,在瀏覽器錄制、分享。
最重要的是它是開源的,它運行在你的服務(wù)器上。
2.1 安裝
從下面地址中下載最新版本的 Teleport:
https://github.com/gravitational/teleport/releases
解壓之后就可以用了,你也可以使用它的安裝腳本安裝到系統(tǒng)相關(guān) bin 目錄,方便直接使用 Teleport 命令。
Teleport 一共有三個小工具,使用過程比較復(fù)雜,有機會單獨寫一篇文章介紹都可以。
直接啟動即可:
$ sudo teleport start
[AUTH] Auth service is starting on 0.0.0.0:3025
[PROXY] Reverse tunnel service is starting on 0.0.0.0:3024
[PROXY] Web proxy service is starting on 0.0.0.0:3080
[SSH] Service is starting on 0.0.0.0:3022
[PROXY] SSH proxy service is starting on 0.0.0.0:3023
這個工具所謂的錄制其實就是在你進(jìn)入遠(yuǎn)程連接的那一刻起它就在錄制整個操作過程。
為了控制錄制過程,我們一般選擇使用 ssh 按照傳統(tǒng)的方式連接進(jìn)去,然后使用 Teleport 的 tclsh 命令連接當(dāng)前計算機,這樣就可以控制錄制過程了。
需要注意的是,這個工具提供的 Web 界面是強制使用 HTTPS 訪問的,使用 HTTP 將無法打開網(wǎng)頁,此外它還使用了谷歌二步驗證(離線工具,不用翻墻)作為登錄驗證,因此你需要手機安裝谷歌二步驗證應(yīng)用。
雖然使用麻煩,但是安全而且界面優(yōu)雅。
打開 Web 界面,輸入 https://<你的IP地址>:3080 開頭的地址會看到下面的界面:

點擊繼續(xù)前往就可以看到登錄界面,如果你要建立私密連接你需要一個域名和SSL證書,前幾天的文章講過。
打開之后二步驗證工具掃描二維碼,輸入驗證碼就可以登錄了。

現(xiàn)在看到的是服務(wù)器列表,因為是一個集群管理工具,所以你可以添加很多服務(wù)器進(jìn)來。
點擊其中一臺服務(wù)器,會直接連接到那臺服務(wù)器(點擊進(jìn)入就會開始錄制):

如你所見,Teleport 處理特殊符號效果不是很好,但是挺方便的,最重要的是,Teleport 錄制不是按照一比一的時間比例來錄制的,如果你不操作,錄制工具也會“暫?!?,所以整個錄制過程你可以慢悠悠地打字,最后的錄制效果也是“行云流水”一般的操作過程。
退出就結(jié)束本次會話,結(jié)束錄制,你可以在界面中查看之前的錄制內(nèi)容:

至于如何分享,詳細(xì)看官方文檔,或者等我有空再寫一篇詳細(xì)的 Teleport 教程。
3. TermRecord
TermRecord 是一個用 python 編寫的開源命令行錄屏工具。
安裝 TermRecord,沒安裝 pip 就先安裝:
# sudo apt-get install python-pip
sudo pip install TermRecord
錄制方法:
TermRecord -o /path/to/output.html # 開始錄制
exit # 結(jié)束錄制,或者 Ctrl+D 快捷鍵結(jié)束錄制。
這個 output.html 就是錄制的文件,可以用瀏覽器打開。
有別于 Asciinema,它不會自動上傳到網(wǎng)上,而是生成一個 html 文件,想要分享的話,你可以將其發(fā)送給好友。
推薦使用 ttyrec 作為輔助工具錄制,因為 TermRecord 處理效果不是很理想。
ttyrec 是一個 tty 控制臺錄制程序,其所錄制的數(shù)據(jù)文件可以使用與之配套的 ttyplay 播放。不管是你在 tty 中的各種操作,還是在 tty 中耳熟能詳?shù)能浖伎蛇M(jìn)行錄制。
使用 sudo apt-get install ttyrec 安裝 ttyrec。
然后兩個一起配合錄制:
TermRecord -b ttyrec -o /path/to/output.html # 開始錄制

4. Showterm
最后介紹的是 Showterm,這是一個用 ruby 編寫的開源命令行錄屏工具,用起來也超級簡單。
使用 gem 來安裝:
sudo gem install showterm
錄制更簡單:
showterm
然后就可以自行敲入各種命令來錄制了,使用 exit 或者 Ctrl+D 快捷鍵結(jié)束錄制。
Showterm 會把錄制結(jié)果直接上傳并給出一個網(wǎng)址,例如:
http://showterm.io/6ccdbde054d30d825934e
這樣就能很方便地分享給朋友們啦。要想嵌入到自己的網(wǎng)頁上也沒有問題:
<iframe src="http://showterm.io/6ccdbde054d30d825934e" width="640" height="480"></iframe>
效果如下:

最后個人推薦 Asciinema 和 Teleport,想簡單點的用 Asciinema,想自己控制整個錄制過程,并存儲在自己服務(wù)器的用 Teleport。