閱讀392 返回首頁    go 阿裏雲 go 技術社區[雲棲]


如何在 Linux 中使用 Asciinema 進行錄製和回放終端會話

簡介

Asciinema 是一個輕量並且非常高效的終端會話錄製器。使用它可以錄製、回放和分享 JSON 格式的終端會話記錄。與一些桌麵錄製器,比如 Recordmydesktop、Simplescreenrecorder、Vokoscreen 或 Kazam 相比,Asciinema 最主要的優點是,它能夠以通過 ASCII 文本以及 ANSI 轉義碼編碼來錄製所有的標準終端輸入、輸出和錯誤信息。

事實上,即使是很長的終端會話,錄製出的 JSON 格式文件也非常小。另外,JSON 格式使得用戶可以利用簡單的文件轉化器,將輸出的 JSON 格式文件嵌入到 HTML 代碼中,然後分享到公共網站或者使用 asciinema 賬戶分享到 Asciinema.org 。最後,如果你的終端會話中有一些錯誤,並且你還懂一些 ASCI 轉義碼語法,那麼你可以使用任何編輯器來修改你的已錄製終端會話。

難易程度:

很簡單!

標準終端:

  • # - 給定命令需要以 root 用戶權限運行或者使用 sudo 命令
  • $ - 給定命令以常規權限用戶運行

從軟件庫安裝

通常, asciinema 可以使用你的發行版的軟件庫進行安裝。但是,如果不可以使用係統的軟件庫進行安裝或者你想安裝最新的版本,那麼,你可以像下麵的“從源代碼安裝”部分所描述的那樣,使用 Linuxbrew 包管理器來執行 Asciinema 安裝。

在 Arch Linux 上安裝:


  1. # pacman -S asciinema

在 Debian 上安裝:


  1. # apt install asciinema

在 Ubuntu 上安裝:


  1. $ sudo apt install asciinema

在 Fedora 上安裝:


  1. $ sudo dnf install asciinema

從源代碼安裝

最簡單並且值得推薦的方式是使用 Linuxbrew 包管理器,從源代碼安裝最新版本的 Asciinema 。

前提條件

下麵列出的前提條件是安裝 Linuxbrew 和 Asciinema 需要滿足的依賴關係:

  • git
  • gcc
  • make
  • ruby

在安裝 Linuxbrew 之前,請確保上麵的這些包都已經安裝在了你的 Linux 係統中。

在 Arch Linux 上安裝 ruby:


  1. # pacman -S git gcc make ruby

在 Debian 上安裝 ruby:


  1. # apt install git gcc make ruby

在 Ubuntu 上安裝 ruby:


  1. $ sudo apt install git gcc make ruby

在 Fedora 上安裝 ruby:


  1. $ sudo dnf install git gcc make ruby

在 CentOS 上安裝 ruby:


  1. # yum install git gcc make ruby

安裝 Linuxbrew

Linuxbrew 包管理器是蘋果的 MacOS 操作係統很受歡迎的 Homebrew 包管理器的一個複刻版本。還沒發布多久,Homebrew 就以容易使用而著稱。如果你想使用 Linuxbrew 來安裝 Asciinema,那麼,請運行下麵命令在你的 Linux 版本上安裝 Linuxbrew:


  1. $ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install)"

現在,Linuxbrew 已經安裝到了目錄 $HOME/.linuxbrew/ 下。剩下需要做的就是使它成為可執行 PATH 環境變量的一部分。


  1. $ echo 'export PATH="$HOME/.linuxbrew/bin:$PATH"' >>~/.bash_profile
  2. $ . ~/.bash_profile

為了確認 Linuxbrew 是否已經安裝好,你可以使用 brew 命令來查看它的版本:


  1. $ brew --version
  2. Homebrew 1.1.7
  3. Homebrew/homebrew-core (git revision 5229; last commit 2017-02-02)

安裝 Asciinema

安裝好 Linuxbrew 以後,安裝 Asciinema 就變得無比容易了:


  1. $ brew install asciinema

檢查 Asciinema 是否安裝正確:


  1. $ asciinema --version
  2. asciinema 1.3.0

錄製終端會話

經過一番辛苦的安裝工作以後,是時候來幹一些有趣的事情了。Asciinema 是一個非常容易使用的軟件。事實上,目前的 1.3 版本隻有很少的幾個可用命令行選項,其中一個是 --help 。

我們首先使用 rec 選項來錄製終端會話。下麵的命令將會開始錄製終端會話,之後,你將會有一個選項來丟棄已錄製記錄或者把它上傳到 asciinema.org 網站以便將來參考。


  1. $ asciinema rec

運行上麵的命令以後,你會注意到, Asciinema 已經開始錄製終端會話了,你可以按下 CTRL+D 快捷鍵或執行exit 命令來停止錄製。如果你使用的是 Debian/Ubuntu/Mint Linux 係統,你可以像下麵這樣嚐試進行第一次 asciinema 錄製:


  1. $ su
  2. Password:
  3. # apt install sl
  4. # exit
  5. $ sl

一旦輸入最後一個 exit 命令以後,將會詢問你:


  1. $ exit
  2. ~ Asciicast recording finished.
  3. ~ Press <Enter> to upload, <Ctrl-C> to cancel.
  4. https://asciinema.org/a/7lw94ys68gsgr1yzdtzwijxm4

如果你不想上傳你的私密命令行技巧到 asciinema.org 網站,那麼有一個選項可以把 Asciinema 記錄以 JSON 格式保存為本地文件。比如,下麵的 asciinema 記錄將被存為 /tmp/my_rec.json


  1. $ asciinema rec /tmp/my_rec.json

另一個非常有用的 asciinema 特性是時間微調。如果你的鍵盤輸入速度很慢,或者你在進行多任務,輸入命令和執行命令之間的時間會比較長。Asciinema 會記錄你的實時按鍵時間,這意味著每一個停頓都將反映在最終視頻的長度上。可以使用 -w 選項來縮短按鍵的時間間隔。比如,下麵的命令將按鍵的時間間隔縮短為 0.2 秒:


  1. $ asciinema rec -w 0.2

回放已錄製終端會話

有兩種方式可以來回放已錄製會話。第一種方式是直接從 asciinema.org 網站上播放終端會話。這意味著,你之前已經把錄製會話上傳到了 asciinema.org 網站,並且需要提供有效鏈接:


  1. $ asciinema play https://asciinema.org/a/7lw94ys68gsgr1yzdtzwijxm4

另外,你也可以使用本地存儲的 JSON 文件:


  1. $ asciinema play /tmp/my_rec.json

如果要使用 wget 命令來下載之前的上傳記錄,隻需在鏈接的後麵加上 .json


  1. $ wget -q -O steam_locomotive.json https://asciinema.org/a/7lw94ys68gsgr1yzdtzwijxm4.json
  2. $ asciinema play steam_locomotive.json

將視頻嵌入 HTML

最後,asciinema 還帶有一個獨立的 JavaScript 播放器。這意味者你可以很容易的在你的網站上分享終端會話記錄。下麵,使用一段簡單的 index.html 代碼來說明這個方法。首先,下載所有必要的東西:


  1. $ cd /tmp/
  2. $ mkdir steam_locomotive
  3. $ cd steam_locomotive/
  4. $ wget -q -O steam_locomotive.json https://asciinema.org/a/7lw94ys68gsgr1yzdtzwijxm4.json
  5. $ wget -q https://github.com/asciinema/asciinema-player/releases/download/v2.4.0/asciinema-player.css
  6. $ wget -q https://github.com/asciinema/asciinema-player/releases/download/v2.4.0/asciinema-player.js

之後,創建一個新的包含下麵這些內容的 /tmp/steam_locomotive/index.html 文件:


  1. <html>
  2. <head>
  3. <link rel="stylesheet" type="text/css" href="./asciinema-player.css" />
  4. </head>
  5. <body>
  6. <asciinema-player src="./steam_locomotive.json" cols="80" rows="24"></asciinema-player>
  7. <script src="./asciinema-player.js"></script>
  8. </body>
  9. </html>

完成以後,打開你的網頁瀏覽器,按下 CTRL+O 來打開新創建的 /tmp/steam_locomotive/index.html 文件。

結論

正如前麵所說的,使用 asciinema 錄製器來錄製終端會話最主要的優點是它的輸出文件非常小,這使得你的視頻很容易分享出去。上麵的例子產生了一個包含 58472 個字符的文件,它是一個隻有 58 KB 大 小的 22 秒終端會話視頻。如果我們查看輸出的 JSON 文件,會發現甚至這個數字已經非常大了,這主要是因為一個 “蒸汽機車” 已經跑過了終端。這個長度的正常終端會話一般會產生一個更小的輸出文件。

下次,當你想要在一個論壇上詢問關於 Linux 配置的問題,並且很難描述你的問題的時候,隻需運行下麵的命令:


  1. $ asciinema rec

然後把最後的鏈接貼到論壇的帖子裏。

故障排除

在 UTF-8 環境下運行 asciinema

錯誤信息:


  1. asciinema needs a UTF-8 native locale to run. Check the output of `locale` command.

解決方法: 生成並導出 UTF-8 語言環境。例如:


  1. $ localedef -c -f UTF-8 -i en_US en_US.UTF-8
  2. $ export LC_ALL=en_US.UTF-8

原文發布時間為:2017-05-18

本文來自雲棲社區合作夥伴“Linux中國”

最後更新:2017-05-19 12:04:26

  上一篇:go  《HttpClient官方文檔》HTTP驗證4.4-4.7
  下一篇:go  《雲數據管理》 2.1 邏輯時間和Lamport時鍾