Linux scriptreplay回放你的高光时刻

简介: Linux scriptreplay回放你的高光时刻

scriptreplay

重新播放终端会话的所有操作

补充说明

scriptreplay 用于在终端中,根据 script 命令记录的终端数据文件和时间日志文件,重现当时用户的所有操作和命令的输出信息。简而言之,重现播放当时终端会话发生的一切信息,而不是重新运行一遍命令。例如,用户当时在输入某条命令时,字符的键入和删除也都会被重现。非常适合用于教程演示场合。而且,在机器 A 上面使用 script 命令记录终端操作,可以在机器 B 上面使用 scriptreplay 命令重新播放。

语法

scriptreplay [options] [-t] timingfile [typescript [divisor]]
选项
-t, --timing file         # 记录时间日志的文件名称
-s, --typescript file     # 记录终端数据信息的日志文件名称
-d, --divisor number      # 表示倍速播放,把时间日志文件记录的时间间隔都除以 number
                          # -d 2 表示播放速度是原始输入单条命令的速度的两倍,-d 0.1 表示播放单条命令的速度减慢 10 倍
-m, --maxdelay number     # 表示命令之间的最大延迟时间(单位是秒)
                          # -m 2 表示 command.log 中存放的两条命令之间的间隔时间如果大于两秒,则按两秒执行播放
-V, --version             # 显示版本信息并退出
-h, --help                # 显示帮助文本并退出

参数

时间日志文件:存储时间日志信息的文件名称

终端数据文件:存储终端数据信息的文件名称

实例

重新播放终端内容,默认第一个参数是时间日志,第二个参数是终端数据文件

scriptreplay time.file command.log

重新播放终端内容,播放快进速度为 1 ,命令之间最大延时为 2 秒

scriptreplay -d 1 -m 2 -t time.file -s command.log

记录终端内容到文件

[root@master1 /tmp]# script -t 2>time.file -a -f command.log
Script started, file is command.log
[root@master1 /tmp]#cd /opt/ser^C
[root@master1 /tmp]#exit
Script done, file is command.log
[root@master1 /tmp]#
[root@master1 /tmp]#
[root@master1 /tmp]#
[root@master1 /tmp]#rm -rf command.log time.file 
[root@master1 /tmp]# script -t 2>time.file -a -f command.log
Script started, file is command.log
[root@master1 /tmp]#cd /opt/ansible/
[root@master1 /opt/ansible]#ll -ths
total 8.0K
   0 drwxr-xr-x  4 root root  75 Jul 16 14:09 chapt7
   0 drwxr-xr-x  3 root root  50 Jul 16 13:29 chapt6
   0 drwxr-xr-x  2 root root 230 Jul 15 17:00 chapt5
4.0K -rw-r--r--  1 root root 876 Jul 15 10:51 ssh-config.yaml
   0 drwxr-xr-x 10 root root 172 Jul 15 08:40 first_role
4.0K -rw-r--r--  1 root root 130 Jul 12 15:45 var.yaml
[root@master1 /opt/ansible]#cat var.yaml 
- hosts: k8s-master
  remote_user: root
  tasks:
    - name: create log file
      file: name=/tmp/{{ ansible_fqdn }} state=touch
[root@master1 /opt/ansible]#kubectl top nodes
Error from server (ServiceUnavailable): the server is currently unable to handle the request (get nodes.metrics.k8s.io)
[root@master1 /opt/ansible]#kubectl get po -n nexus
^C
[root@master1 /opt/ansible]#ok
bash: ok: command not found
[root@master1 /opt/ansible]#echo bye
bye

重新播放终端内容

[root@master1 /tmp]#scriptreplay -d 2  -t time.file -s command.log
[root@master1 /tmp]#cd /opt/ansible/
[root@master1 /opt/ansible]#ll -ths
total 8.0K
   0 drwxr-xr-x  4 root root  75 Jul 16 14:09 chapt7
   0 drwxr-xr-x  3 root root  50 Jul 16 13:29 chapt6
   0 drwxr-xr-x  2 root root 230 Jul 15 17:00 chapt5
4.0K -rw-r--r--  1 root root 876 Jul 15 10:51 ssh-config.yaml
   0 drwxr-xr-x 10 root root 172 Jul 15 08:40 first_role
4.0K -rw-r--r--  1 root root 130 Jul 12 15:45 var.yaml
[root@master1 /opt/ansible]#cat var.yaml 
- hosts: k8s-master
  remote_user: root
  tasks:
    - name: create log file
      file: name=/tmp/{{ ansible_fqdn }} state=touch
[root@master1 /opt/ansible]#kubectl top nodes
Error from server (ServiceUnavailable): the server is currently unable to handle the request (get nodes.metrics.k8s.io)
[root@master1 /opt/ansible]#kubectl get po -n nexus
^C
[root@master1 /opt/ansible]#ok
bash: ok: command not found
[root@master1 /opt/ansible]#echo bye
bye

2afa30fa7d4f4571bfebbf6955628815.gif

注意点

其中,只有命令scriptreplay -d 1 -m 2 -t time.file -s command.log是用户输入,其他均为自动呈现(且视觉效果与真实用户的操作一致)。通过查看上面输出的时间2020-12-23 20:48:46,可以证明,这是重新播放当时的记录,而非重新执行一遍命令。也就是说,可以把time.file和command.log文件移动到任意一台支持scriptreplay命令的机器上,都可以动态重现命令输入与终端回显

相关实践学习
CentOS 7迁移Anolis OS 7
龙蜥操作系统Anolis OS的体验。Anolis OS 7生态上和依赖管理上保持跟CentOS 7.x兼容,一键式迁移脚本centos2anolis.py。本文为您介绍如何通过AOMS迁移工具实现CentOS 7.x到Anolis OS 7的迁移。
目录
相关文章
|
5月前
|
Linux 数据处理
Linux命令scriptreplay的深入解析
`scriptreplay`是Linux工具,用于根据`script`命令记录的终端会话及时间戳重现实时操作。它精确重现用户输入,支持跨机器播放、速度调整,并可用于教学、回顾。通过`-t`指定时间日志,`-s`指定会话日志,`-d`调整播放速度。注意环境差异可能影响重放效果,最好在类似环境下使用。
|
JavaScript Linux 开发工具
Linux文本模式下录制、回放和共享操作记录(script、scriptreplay、mkfifo)的妙用
在生产中,有时候需要把别人的操作过程录制下来,后期可以进行回放查看。还可以实时共享自己的操作,让另一个人在千里之外指导你进行操作。
3121 0
|
15天前
|
监控 Linux
如何检查 Linux 内存使用量是否耗尽?这 5 个命令堪称绝了!
本文介绍了在Linux系统中检查内存使用情况的5个常用命令:`free`、`top`、`vmstat`、`pidstat` 和 `/proc/meminfo` 文件,帮助用户准确监控内存状态,确保系统稳定运行。
103 6
|
16天前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
57 3
|
16天前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
48 2
|
23天前
|
缓存 监控 Linux
|
27天前
|
Linux Shell 数据安全/隐私保护
|
28天前
|
域名解析 网络协议 安全
|
10天前
|
运维 监控 网络协议
运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面
本文介绍了运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面,旨在帮助读者提高工作效率。从基本的文件查看与编辑,到高级的网络配置与安全管理,这些命令是运维工作中的必备工具。
44 3
|
2月前
|
运维 监控 网络协议