scriptreplay
重新播放终端会话的所有操作
补充说明
scriptreplay 用于在终端中,根据 script
命令记录的终端数据文件和时间日志文件,重现当时用户的所有操作和命令的输出信息。简而言之,重现播放当时终端会话发生的一切信息,而不是重新运行一遍命令。例如,用户当时在输入某条命令时,字符的键入和删除也都会被重现。非常适合用于教程演示场合。而且,在机器 A 上面使用 script
命令记录终端操作,可以在机器 B 上面使用 scriptreplay
命令重新播放。
语法
1scriptreplay [options] [-t] timingfile [typescript [divisor]]
选项
1-t, --timing file # 记录时间日志的文件名称
2-s, --typescript file # 记录终端数据信息的日志文件名称
3-d, --divisor number # 表示倍速播放,把时间日志文件记录的时间间隔都除以 number
4 # -d 2 表示播放速度是原始输入单条命令的速度的两倍,-d 0.1 表示播放单条命令的速度减慢 10 倍
5-m, --maxdelay number # 表示命令之间的最大延迟时间(单位是秒)
6 # -m 2 表示 command.log 中存放的两条命令之间的间隔时间如果大于两秒,则按两秒执行播放
7-V, --version # 显示版本信息并退出
8-h, --help # 显示帮助文本并退出
参数
- 时间日志文件:存储时间日志信息的文件名称
- 终端数据文件:存储终端数据信息的文件名称
实例
1# 重新播放终端内容,默认第一个参数是时间日志,第二个参数是终端数据文件
2scriptreplay time.file command.log
3# 重新播放终端内容,播放快进速度为 1 ,命令之间最大延时为 2 秒
4scriptreplay -d 1 -m 2 -t time.file -s command.log
记录终端内容到文件
1zfb@localhost:~$ script -t 2>time.file -a -f command.log
2Script started, file is command.log
3zfb@localhost:~$ echo "hello, world"
4hello, world
5zfb@localhost:~$ echo $(date "+%Y-%m-%d %H:%M:%S")
62020-12-23 20:48:46
7zfb@localhost:~$ echo "Bye"
8Bye
9zfb@localhost:~$ ls -al
10total 20
11drwxr-xr-x 2 zfb zfb 4096 Dec 23 20:48 .
12drwxr-xr-x 37 zfb zfb 4096 Dec 23 20:49 ..
13-rw-r--r-- 1 zfb zfb 0 Dec 23 19:03 a.txt
14-rw-r--r-- 1 zfb zfb 12 Dec 23 19:04 b.txt
15-rw-r--r-- 1 zfb zfb 2744 Dec 23 20:49 command.log
16-rw-r--r-- 1 zfb zfb 790 Dec 23 20:49 time.file
17zfb@localhost:~$ exit
18Script done, file is command.log
19zfb@localhost:~$
重新播放终端内容
1zfb@localhost:~$ scriptreplay -d 1 -m 2 -t time.file -s command.log
2zfb@localhost:~$ echo "hello, world"
3hello, world
4zfb@localhost:~$ echo $(date "+%Y-%m-%d %H:%M:%S")
52020-12-23 20:48:46
6zfb@localhost:~$ echo "Bye"
7Bye
8zfb@localhost:~$ ls -al
9total 20
10drwxr-xr-x 2 zfb zfb 4096 Dec 23 20:48 .
11drwxr-xr-x 37 zfb zfb 4096 Dec 23 20:49 ..
12-rw-r--r-- 1 zfb zfb 0 Dec 23 19:03 a.txt
13-rw-r--r-- 1 zfb zfb 12 Dec 23 19:04 b.txt
14-rw-r--r-- 1 zfb zfb 2744 Dec 23 20:49 command.log
15-rw-r--r-- 1 zfb zfb 790 Dec 23 20:49 time.file
16zfb@localhost:~$ exit
17
18zfb@localhost:~$
其中,只有命令scriptreplay -d 1 -m 2 -t time.file -s command.log
是用户输入,其他均为自动呈现(且视觉效果与真实用户的操作一致)。通过查看上面输出的时间2020-12-23 20:48:46
,可以证明,这是重新播放当时的记录,而非重新执行一遍命令。也就是说,可以把time.file
和command.log
文件移动到任意一台支持scriptreplay
命令的机器上,都可以动态重现命令输入与终端回显。
来源:https://github.com/jaywcjlove/linux-command
最后修改于: Wednesday, January 31, 2024
版权申明:
- 未标注来源的内容全部为原创,未经授权请勿转载(因转载后排版往往错乱、内容不可控、无法持续更新等);
- 非营利为目的,演绎本博客任何内容,请以'原文出处'或者'参考链接'等方式给出本站相关网页地址(方便读者)。