欠下的债迟早是要还的,查文档,重验证,出结果,不误导

文章勘误

在上一篇文章Asciinema:你的所有操作都将被录制中有两个地方表述有错误或瑕疵,这里更正一下

第一个地方为录制时的参数--stdin,参数的意思是启用标准输入录制,原文中说看不到效果,可能官方还未支持,实际上官方已经支持了,且查看录制文件内容时可以看到区别,以下两个对比的例子来说明

例一:执行下方的命令进行录制,录制开始之后执行ssh命令输入密码连接另一台主机

asciinema rec ops-coffee.cast

执行asciinema cat命令查看执行命令

# asciinema cat ops-coffee.cast
root@onlinegame:~# ssh root@192.168.106.192 ls ops-coffee.cn
root@192.168.106.192's password:
ops-coffee.cn
root@onlinegame:~# exit
exit

打印录制的文件内容如下:

# cat ops-coffee.cast
{"version": 2, "width": 237, "height": 55, "timestamp": 1574060513, "env": {"SHELL": "/bin/bash", "TERM": "linux"}}
[0.012221, "o", "root@onlinegame:~# "]
[0.607184, "o", "exit"]
[1.07092, "o", "\b\b\b\bssh root@192.168.106.192 ls ops-coffee.cn"]
[1.703405, "o", "\r\n"]
[1.762974, "o", "root@192.168.106.192's password: "]
[4.550759, "o", "\r\n"]
[4.558138, "o", "ops-coffee.cn\r\n"]
[4.559187, "o", "root@onlinegame:~# "]
[5.182817, "o", "e"]
[5.582643, "o", "x"]
[5.838648, "o", "i"]
[6.03067, "o", "t"]
[6.759346, "o", "\r\nexit\r\n"]

例二:执行同样的命令,加上--stdin参数

asciinema rec --stdin ops-coffee.1.cast

执行asciinema cat命令查看执行命令

# asciinema cat ops-coffee.1.cast
root@onlinegame:~# ssh root@192.168.106.192 ls ops-coffee.cn
root@192.168.106.192's password:
ops-coffee.cn
root@onlinegame:~# exit
exit

这次再看录制文件的内容:

# cat ops-coffee.1.cast
{"version": 2, "width": 237, "height": 55, "timestamp": 1574060808, "env": {"SHELL": "/bin/bash", "TERM": "linux"}}
[0.01012, "o", "root@onlinegame:~# "]
[1.654752, "i", "\u001b[A"]
[1.654971, "o", "exit"]
[2.014568, "i", "\u001b[A"]
[2.014727, "o", "\b\b\b\bssh root@192.168.106.192 ls ops-coffee.cn"]
[3.7185, "i", "\r"]
[3.719167, "o", "\r\n"]
[3.781231, "o", "root@192.168.106.192's password: "]
[5.198467, "i", "s"]
[5.542343, "i", "m"]
[5.774451, "i", "i"]
[5.85435, "i", "l"]
[5.990628, "i", "e"]
[6.342587, "i", "\r"]
[6.342817, "o", "\r\n"]
[6.351245, "o", "ops-coffee.cn\r\n"]
[6.351475, "o", "root@onlinegame:~# "]
[7.182384, "i", "e"]
[7.182585, "o", "e"]
[7.461976, "i", "x"]
[7.462183, "o", "x"]
[7.543019, "i", "i"]
[7.543306, "o", "i"]
[7.686868, "i", "t"]
[7.68703, "o", "t"]
[7.87045, "i", "\r"]
[7.871348, "o", "\r\nexit\r\n"]

会发现在实际执行命令完全一致的情况下,录像文件与上一个没有加--stdin时的不一样,其中就多了输入密码的记录smile

且在asciinema文件IO流信息的第二个字段不仅有了o,还有i的出现,上一篇文章讲到o是一个固定字符串不知道作用,经过深入查询确认,IO信息流的第二个字段就是固定string字符串,且只会是io之间的一种,分别表示stdin标准输入或stdout标准输出

--stdin的效果无论是通过asciinema play命令播放或是asciinema cat命令查看都是无法察觉的,在实现WebSSH录像回放时又对录像文件进行了深入研究,最终发现问题,这里查漏补缺,予以更正,对于之前的错误,深表歉意

Web端使用

asciinema录制文件在web端播放是通过asciinema-player组件来实现的,使用也是非常的简单

分别引入css和js文件,添加一个asciinema-player的标签即可播放标签内文件的录像

<html>
<head>
...
<link rel="stylesheet" type="text/css" href="/asciinema-player.css" />
...
</head>
<body>
...
<asciinema-player src="/ops-coffee.cast"></asciinema-player>
...
<script src="/asciinema-player.js"></script>
</body>
</html>

asciinema-player标签内可以添加如下一些属性:

cols: 播放终端的列数,默认为80,如果cast文件的header头有设置width,这里无需设置

rows: 播放终端的行数,默认为24,如果cast文件的header头有设置height,这里无需设置

autoplay: 是否自动开始播放,默认不会自动播放

preload: 预加载,如果你想为录像配音,这里可以预加载声音

loop: 是否循环播放,默认不循环

start-at: 从哪个地方开始播放,可以是123这样的秒数或者是1:06这样的时间点

speed: 播放的速度,类似于play命令播放时的-s参数

idle-time-limit: 最大空闲秒数,类似于play命令播放时的-i参数

poster: 播放之前的预览,可以是npt:1:06这样给定时间点的画面,也可以是data:text/plain,ops-coffee.cn这样给定的文字,其中文字支持ANSI编码,例如可以给文字加上颜色data:text/plain,\x1b[1;32mops-coffee.cn\x1b[1;0m

font-size: 文字大小,可以是smallmediumbig或者直接是14px这样的css样式大小

theme: 终端颜色主题,默认是asciinema,也提供有tangosolarized-darksolarized-light或者monokai可选择,当然你也可以自定义主题

还有几个参数titleauthorauthor-urlauthor-img-url分别表示了录像的标题、作者、作者的主页、作者的头像,这些配置会在全屏观看录像时显示在标题栏中,像下边这样

最后使用以下参数设置asciinema-player,看看播放的效果

<asciinema-player id="play"
title="WebSSH Record"
author="ops-coffee.cn"
author-url="https://ops-coffee.cn"
author-img-url="/static/img/logo.png"
src="/static/record/ops-coffee.cast"
speed="3" idle-time-limit="2"
poster="data:text/plain,\x1b[1;32m2019-11-18 16:26:18\x1b[1;0m用户\x1b[1;32madmin\x1b[1;0m连接主机\x1b[1;32m192.168.106.101:22\x1b[1;0m的录像记录">
</asciinema-player>

播放效果如下

同时asciinema-player播放时还支持以下快捷键的使用

  • space 空格,播放或暂停
  • f 全屏播放,可以看到title等设置
  • / 快进或快退,每次5秒
  • 0,1,6 ... 9 跳转到录像的0%,10%,60% ... 90%
  • < / > 增加或降低播放速度,play的-s参数

相关文章推荐阅读:

Asciinema文章勘误及Web端使用介绍的更多相关文章

  1. dr-helper项目设计介绍(一个包括移动端和Web端的点餐管理系统)

    一.源代码路径 https://github.com/weiganyi/dr-helper 二.界面 通过浏览器訪问Web服务,能够看到界面例如以下: ADT-Bundle编译project生成dr- ...

  2. 介绍一款web端的截图工具

    牛牛截图,web端的一款截图工具,下面是代码及实例. 依赖jquery-1.7.min.js /**************************************************** ...

  3. Web端即时通讯技术盘点:短轮询、Comet、Websocket、SSE

    1. 前言 Web端即时通讯技术因受限于浏览器的设计限制,一直以来实现起来并不容易,主流的Web端即时通讯方案大致有4种:传统Ajax短轮询.Comet技术.WebSocket技术.SSE(Serve ...

  4. 新手入门:史上最全Web端即时通讯技术原理详解

    前言 有关IM(InstantMessaging)聊天应用(如:微信,QQ).消息推送技术(如:现今移动端APP标配的消息推送模块)等即时通讯应用场景下,大多数都是桌面应用程序或者native应用较为 ...

  5. Asp.net SignalR 实现服务端消息推送到Web端

              之前的文章介绍过Asp.net SignalR,  ASP .NET SignalR是一个ASP .NET 下的类库,可以在ASP .NET 的Web项目中实现实时通信.  今天我 ...

  6. Web端即时通讯技术原理详解

    前言 有关IM(InstantMessaging)聊天应用(如:微信,QQ).消息推送技术(如:现今移动端APP标配的消息推送模块)等即时通讯应用场景下,大多数都是桌面应用程序或者native应用较为 ...

  7. Comet技术详解:基于HTTP长连接的Web端实时通信技术

    前言 一般来说,Web端即时通讯技术因受限于浏览器的设计限制,一直以来实现起来并不容易,主流的Web端即时通讯方案大致有4种:传统Ajax短轮询.Comet技术.WebSocket技术.SSE(Ser ...

  8. web端及时通讯原理

    前言 有关IM(InstantMessaging)聊天应用(如:微信,QQ).消息推送技术(如:现今移动端APP标配的消息推送模块)等即时通讯应用场景下,大多数都是桌面应用程序或者native应用较为 ...

  9. web端权限维持【好文】

    前言 关于权限维持,我之前写过一篇基于系统端的后门技术文章,如映像劫持啊,lpk之类. 内容目录: - 构造文件包含漏洞- 隐蔽性脚本木马- 构造sql注入点 正文 0x01 构造文件包含漏洞 > ...

随机推荐

  1. 正确理解IM长连接的心跳及重连机制,并动手实现(有完整IM源码)

    1.引言 说道“心跳”这个词大家都不陌生,当然不是指男女之间的心跳,而是和长连接相关的.顾名思义就是证明是否还活着的依据. 什么场景下需要心跳呢?目前我们接触到的大多是一些基于长连接的应用需要心跳来“ ...

  2. 新手入门HTML5开发,你必须先搞懂这6个问题

    凭借着跨平台,实时更新,无需安装,易于分发等众多优点,HTML5受到越来越多企业的青睐.而凭借着入门相对简单的优势,很多人编程初学者都选择学习HTML5.但对于初学者来说,学习HTML5之前,会有很多 ...

  3. PHP会话机制---session的基本使用

    登录网站后,在每个网页都能拿到用户信息 (1) 使用超链接传递用户名,这样太繁琐了,不建议使用 . (2) 使用数据库,每打开一个页面都查询一次用户信息表,这样网页加载速度变慢,用户体验变差. (3) ...

  4. C#版ASP.NET Web API使用示例

    为更好更快速的上手Webapi设计模式的接口开发,本文详细解释了在Web API接口的开发过程中,我们可能会碰到各种各样的问题总结了这篇,希望对大家有所帮助. 1:在接口定义中确定MVC的get或者P ...

  5. Halcon一日一练:阈值分割的几个算子

    threshold(Image:Region:MinGray:MaxGray:) 功能:得到灰度值在最小与最大这间的那些部分.其返回仍然是一个区域. MinGray<MaxGray. 这个算子可 ...

  6. boost::thread_specific_ptr

    thread_specific_ptr代表了一个全局的变量,而在每个线程中都各自new一个线程本地的对象交给它进行管理. 线程之间就不会因为访问同一全局对象而引起资源竞争导致性能下降. 而线程结束时, ...

  7. python编程系列---进程池的优越性体验

    1.通过multiprocessing.Process()类创建子进程 import multiprocessing, time, os, random def work(index): " ...

  8. 记因git规范导致的提测和发布延迟

    号外 最近因为换工作的原因,我的博客和Github没有像之前那样频繁的更新了.一方面原因是投递简历和准备面试,由于之前的基础没有很扎实,需要把平时的知识点都整理一遍.这个时间段持续了20多天的样子,因 ...

  9. 关于MySQL的经典例题50道 答案参考

    答案不全面,欢迎交流沟通 -- 1.查询"01"课程比"02"课程成绩高的学生的信息及课程分数select * from  sc s INNER JOIN sc ...

  10. 2019.10.28 CSP%您赛第四场t3

    我写不动前两个了. 原谅一下. ____________________________________________________________________________________ ...