有时候演示或者为了更好地说明终端的操作过程,需要录制终端的操作,使用录屏软件固然可以,但是缺点也明显,录制视频不仅体积大、需要操作界面,而且视频录制是按照一比一的时间录制,浏览器来体验很不好。
这时候就需要专门的终端录制工具了,本文总结了几款个人认为不错的终端录制工具。欢迎补充。
本文介绍的工具有:
Asciinema、Teleport、TermRecord、Showterm
1. Asciinema
Asciinema 是一个用 ClojureScript 编写的开源命令行录屏工具。
这个工具相信大家经常看到它的Logo,很多开源项目网页的操作介绍都是使用这个工具录制的。
1.1 安装
安装没什么大问题,大部分发行版的软件仓库都收录了这个工具。
通用安装(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
快捷键结束录制。它会在结束录制的时候提示,如果要上传的话,敲回车。上传之后,Asciinema 会给出一个网址,例如:
https://asciinema.org/a/44nu2i2ieywlmqq9wx5sk5k1e
要想嵌入到自己的网页上也没有问题:
<script type="text/javascript" src="https://asciinema.org/a/44nu2i2ieywlmqq9wx5sk5k1e.js" id="asciicast-44nu2i2ieywlmqq9wx5sk5k1e" async></script>
效果如下:
总结:
Asciinema 总得来说是非常优秀的终端录制工具,它使用 Json 来存储操作过程,通过解析 Json 文件来还原操作流程,体积小。
此外 Asciinema 比较注重社区,因此有账号、上传等功能,一方面便于分享另一方面也带来一些麻烦,例如要打开它的网站才能看到终端录制过程。大大的Logo似乎也没有定制的功能。
个人认为比较不好的就是 Asciinema 按照一比一时间比例播放,熟悉终端的同学都知道终端操作不可能一直行云流水,有时候会有一点停顿,录制工具把这些时间也录制播放出来很影响观众体验。
2. Teleport
其实 Teleport 并非终端录制工具,终端录制只是其丰富而且强大功能中的一个。
Teleport 是一款可以替代 SSH 工具的新一代服务器集群管理工具,它不仅可以同时管理大量服务器还可以作为一个终端录制工具,它提供了一个直观的 Web 界面来显示终端,也就是说你可以在浏览器操作服务器,在浏览器录制、分享。
最重要的是它是开源的,它运行在你的服务器上。
2.1 安装
从下面地址中下载最新版本的 Teleport:
https://github.com/gravitational/teleport/releases
解压之后就可以用了,你也可以使用它的安装脚本安装到系统相关 bin 目录,方便直接使用 Teleport 命令。
Teleport 一共有三个小工具,使用过程比较复杂,有机会单独写一篇文章介绍都可以。
直接启动即可:
$ 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
这个工具所谓的录制其实就是在你进入远程连接的那一刻起它就在录制整个操作过程。
为了控制录制过程,我们一般选择使用 ssh 按照传统的方式连接进去,然后使用 Teleport 的 tclsh 命令连接当前计算机,这样就可以控制录制过程了。
需要注意的是,这个工具提供的 Web 界面是强制使用 HTTPS 访问的,使用 HTTP 将无法打开网页,此外它还使用了谷歌二步验证(离线工具,不用翻墙)作为登录验证,因此你需要手机安装谷歌二步验证应用。
虽然使用麻烦,但是安全而且界面优雅。
打开 Web 界面,输入 https://<你的IP地址>:3080
开头的地址会看到下面的界面:
点击继续前往就可以看到登录界面,如果你要建立私密连接你需要一个域名和SSL证书,前几天的文章讲过。
打开之后二步验证工具扫描二维码,输入验证码就可以登录了。
现在看到的是服务器列表,因为是一个集群管理工具,所以你可以添加很多服务器进来。
点击其中一台服务器,会直接连接到那台服务器(点击进入就会开始录制):
如你所见,Teleport 处理特殊符号效果不是很好,但是挺方便的,最重要的是,Teleport 录制不是按照一比一的时间比例来录制的,如果你不操作,录制工具也会“暂停”,所以整个录制过程你可以慢悠悠地打字,最后的录制效果也是“行云流水”一般的操作过程。
退出就结束本次会话,结束录制,你可以在界面中查看之前的录制内容:
至于如何分享,详细看官方文档,或者等我有空再写一篇详细的 Teleport 教程。
3. TermRecord
TermRecord 是一个用 python 编写的开源命令行录屏工具。
安装 TermRecord,没安装 pip 就先安装:
# sudo apt-get install python-pip
sudo pip install TermRecord
录制方法:
TermRecord -o /path/to/output.html # 开始录制
exit # 结束录制,或者 Ctrl+D 快捷键结束录制。
这个 output.html 就是录制的文件,可以用浏览器打开。
有别于 Asciinema,它不会自动上传到网上,而是生成一个 html 文件,想要分享的话,你可以将其发送给好友。
推荐使用 ttyrec 作为辅助工具录制,因为 TermRecord 处理效果不是很理想。
ttyrec 是一个 tty 控制台录制程序,其所录制的数据文件可以使用与之配套的 ttyplay 播放。不管是你在 tty 中的各种操作,还是在 tty 中耳熟能详的软件,都可进行录制。
使用 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
快捷键结束录制。
Showterm 会把录制结果直接上传并给出一个网址,例如:
http://showterm.io/6ccdbde054d30d825934e
这样就能很方便地分享给朋友们啦。要想嵌入到自己的网页上也没有问题:
<iframe src="http://showterm.io/6ccdbde054d30d825934e" width="640" height="480"></iframe>
效果如下:
最后个人推荐 Asciinema 和 Teleport,想简单点的用 Asciinema,想自己控制整个录制过程,并存储在自己服务器的用 Teleport。