Linux 终端录制工具

有时候演示或者为了更好地说明终端的操作过程,需要录制终端的操作,使用录屏软件固然可以,但是缺点也明显,录制视频不仅体积大、需要操作界面,而且视频录制是按照一比一的时间录制,浏览器来体验很不好。

这时候就需要专门的终端录制工具了,本文总结了几款个人认为不错的终端录制工具。欢迎补充。

本文介绍的工具有:
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 录制效果

总结:
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 开头的地址会看到下面的界面:

直接使用 https 方式打开

点击继续前往就可以看到登录界面,如果你要建立私密连接你需要一个域名和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。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,686评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,668评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,160评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,736评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,847评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,043评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,129评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,872评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,318评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,645评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,777评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,861评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,589评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,687评论 2 351

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,858评论 25 707
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,637评论 18 139
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,066评论 4 62
  • https://showterm.io/https://asciinema.org/script 命令
    王一航阅读 361评论 0 6
  • 早上坐217路,结果发现久等不来,忽然想起来,4号地铁线围挡了,夏殿村这一站忽略,只好走路到下一站搭车。...
    鲇鱼200276阅读 293评论 0 0