[转帖]linux中使用script和scriptreplay进行命令操作录制与重放

linux,使用,script,scriptreplay,进行,命令,操作,录制,重放 · 浏览次数 : 0

小编点评

**归纳总结** 生成内容时需要带简单的排版,并使用 script 和 scriptreplay 命令以重放命令。 **步骤** 1. 使用 script 和 scriptreplay 命令重放脚本。 2. 指定 log_file 你与脚本命令一起使用。 3. 使用 -timing=file 选项与 script 命令和 file 在这种情况下是 file.txt 与脚本命令一起使用。 4. 在 script 和 scriptreplay 中,带简单的排版。 **示例** ```python # script.py print(" script.py 的输出") # scriptreplay.py print(" scriptreplay.py 的输出") # log_file.txt print(" 脚本输出的原始输出") print(" 脚本输出的原始字符数") ``` **输出** ``` script.py 的输出 scriptreplay.py 的输出 脚本输出的原始输出 脚本输出的原始字符数 脚本输出的原始输出 脚本输出的原始字符数 ``` **说明** * script 和 scriptreplay 是脚本重放的命令。 * log_file 是脚本输出的记录文件。 * -timing=file 选项用于指定输出文件。

正文

https://cloud.tencent.com/developer/article/2015118

 

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

如何使用脚本命令录制 Linux 终端

script 命令将终端活动存储在可由用户命名的日志文件中,当用户未提供名称时,默认文件名, typescript 用来。

script 命令的基本语法
# script [options] - -timing=timing_file log_filename

要开始录制 Linux 终端,请键入 script 并添加日志 filename

> rumenz@local ~ $ script history_log.txt

Script started, file is history_log.txt

停止 script, 类型 exit 并按下 [Enter].

> rumenz@local ~ $ exit

Script done, file is history_log.txt

如果脚本无法写入指定的日志文件,则会显示错误。

例如,在下面的输出中,文件的权限 typescript不允许非任何用户或组读取、写入和执行文件。当你在没有日志文件名的情况下运行脚本命令时,它会尝试写入默认文件,typescript 因此显示错误。

> rumenz@local ~ $ ls -l typescript
--------- 1 rumenz rumenz 144 Sep 15 00:00 typescript
> rumenz@local ~ $ script
script: open failed: typescript: Permission denied
Terminated

使用脚本命令的示例

我已经命名了我的日志文件 script.log 在下面的示例中,你可以为文件指定不同的名称。

> rumenz@local ~ $ script script.log
//开始执行命令
> rumenz@local ~ $ cal

    October 2021    
Su Mo Tu We Th Fr Sa
                1  2
 3  4  5  6  7  8  9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31         

> rumenz@local ~ $ w

 14:49:40 up  4:06,  2 users,  load average: 37, 56, 62
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
rumenz  tty8     :0               10:45    4:06m  7:40   36s x-session-manager
rumenz  pts/5    :0               13:42    00s  07s  00s script script.log

> rumenz@local ~ $ uptime

14:49:43 up  4:06,  2 users,  load average: 37, 56, 62

> rumenz@local ~ $ whoami
rumenz

> rumenz@local ~ $ echo 'using script'

using script
> rumenz@local ~ $ exit
exit
Script done, file is script.log

现在尝试查看日志文件script.log 对于所有记录的命令,当你查看日志时,你会意识到该脚本还存了换行符和退格符。

> rumenz@local ~ $ vi script.log
输出
^[[0m^[[255D^[[01;32m> rumenz@local^[[01;34m ~ $^[[00m cal^M
   September 2021     ^M
Su Mo Tu We Th Fr Sa  ^M
                1  2  ^M
 3  4  5  6  7  8  9  ^M
10 11 12 13 14 15 16  ^M
17 18 19 20 21 22 23  ^M
24 25 26 27 28 29 30  ^M
31                    ^M

^[[01;32m> rumenz@local^[[01;34m ~ $^[[00m w^M
 14:49:40 up  4:06,  2 users,  load average: 37, 56, 62^M
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT^M
rumenz  tty8     :0               10:45    4:06m  7:40   36s x-session-manager^M
rumenz  pts/5    :0               13:42    00s  07s  00s script script.log^M
^[[01;32m> rumenz@local^[[01;34m ~ $^[[00m uptime^M
 14:49:43 up  4:06,  2 users,  load average: 37, 56, 62^M
^[[01;32m> rumenz@local^[[01;34m ~ $^[[00m whoami^M
rumenz^M
^[[01;32m> rumenz@local^[[01;34m ~ $^[[00m echo ''^Hu'^Hs'^Hi'^Hn'^Hg'^H '^Hs'^Hc'^Hr'^Hi'^Hp'^Ht'^H^M
using script^M
^[[01;32m> rumenz@local^[[01;34m ~ $^[[00m exit^M
exit^M

Script done on Sunday 10 October 2021 14:49:59 PM IST
~

你可以使用 -a 附加日志文件或打字稿的选项,保留先前的内容。

> rumenz@local ~ $ script -a script.log
Script started, file is script.log

> rumenz@local ~ $ date
Sun Oct 10 15:04:33 CST 2021

> rumenz@local ~ $ pwd
/home/rumenz

> rumenz@local ~ $ whereis script
script: /usr/bin/script /usr/bin/X11/script /usr/share/man/man1/script.gz

> rumenz@local ~ $ whatis script
script (1)           - make typescript of terminal session

查看脚本内容,使用后登录 -a 附加它的选项。

> rumenz@local ~ $ vi script.log
输出
^[[0m^[[255D^[[01;32m> rumenz@local^[[01;34m ~ $^[[00m date^M
Sun Oct 10 15:04:33 CST 2021^M
^[[01;32m> rumenz@local^[[01;34m ~ $^[[00m pwd^M
/home/rumenz^M
^[[01;32m> rumenz@local^[[01;34m ~ $^[[00m whre^H^[[K^H^[[Kereis script^M
script: /usr/bin/script /usr/bin/X11/script /usr/share/man/man1/script.gz^M
^[[01;32m> rumenz@local^[[01;34m ~ $^[[00m whatis script^M
script (1)           - make typescript of terminal session^M
^[[01;32m> rumenz@local^[[01;34m ~ $^[[00m vi s^H^[[K^H^[[K^H^[[K^H^[[Kexit^M
exit^M

要记录除交互式 shell 会话之外的单个命令的结果,请使用 -c 选项。

> rumenz@local ~ $ script -c 'hostname' script.log

Script started, file is script.log
rumenz.com
Script done, file is script.log

如果你希望脚本以安静模式运行,则可以使用 -q选项。你不会看到显示脚本正在启动或退出的消息。

> rumenz@local ~ $ script -c 'who'  -q  script.log

rumenz  tty8         2021-10-10 10:45 (:0)
rumenz  pts/5        2021-10-10 13:42 (:0)

要将计时信息设置为标准错误或文件,请使用 –timing选项。当你想要重新显示存储在 log_file 中的输出时,计时信息很有用。

启动脚本并运行以下命令 w, uptimecal

> rumenz@local ~ $ script --timing=time.txt script.log
Script started, file is script.log

> rumenz@local ~ $ w
 15:09:31 up  4:26,  2 users,  load average: 38, 39, 47
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
rumenz  tty8     :0               10:45    4:26m  8:15   38s x-session-manager
rumenz  pts/5    :0               13:42    00s  09s  00s script --timing=time.txt script.log

> rumenz@local ~ $ uptime
 15:09:36 up  4:26,  2 users,  load average: 43, 40, 48

> rumenz@local ~ $ cal
    October 2021    
Su Mo Tu We Th Fr Sa
                1  2
 3  4  5  6  7  8  9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

你可以查看 script.logtime.txt 上面的计时命令的文件。

> rumenz@local ~ $ vi script.log
输出
^[[0m^[[255D^[[01;32m> rumenz@local^[[01;34m ~ $^[[00m w^M
 15:12:05 up  4:28,  2 users,  load average: 31, 37, 45^M
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT^M
rumenz  tty8     :0               10:45    4:28m  8:20   38s x-session-manager^M
rumenz  pts/5    :0               13:42    00s  09s  00s script --timing=time.txt script.log^M
^[[01;32m> rumenz@local^[[01;34m ~ $^[[00m uptime^M
 15:12:07 up  4:28,  2 users,  load average: 29, 36, 45^M
^[[01;32m> rumenz@local^[[01;34m ~ $^[[00m cal^M
   September 2021     ^M
Su Mo Tu We Th Fr Sa  ^M
                1  2  ^M
 3  4  5  6  7  8  9  ^M
10 11 12 13 14 15 16  ^M
17 18 19 20 21 22 23  ^M
24 25 26 27 28 29 30  ^M
31                    ^M

现在查看 time.txt 文件。

> rumenz@local ~ $ vi time.txt
输出
259669 306
037680 829
000006 2
000002 100
000002 2
000002 102
000019 202
000004 2
000002 102
000015 100
000002 2
000003 2
000002 99
000011 2
000003 82
...

time.txt 文件有两列,第一列显示自上次显示以来经过的时间,第二列显示这次显示的字符数。

使用 scriptreplay 使用计时信息重放脚本

scriptreplay 命令有助于重播你的信息 log_file 记录的 script 命令。

时间信息由 -timing=file 选项与 script 命令和 file 在这种情况下是 file.txt 与脚本命令一起使用。

请记住,你需要指定 log_file你与脚本命令一起使用。

重放最后三个命令 w, uptimecal 我们运行如下。

> rumenz@local ~ $ scriptreplay --timing=time.txt script.log

log_file 使用时间信息重放,记录的命令被运行并且它们的输出在记录时显示原始输出的同时显示。

概括

这两个命令, scriptscriptreplay当你需要多次运行同一批命令时,易于使用并提供很多帮助。它们在管理仅具有用于与系统交互的命令行界面的服务器方面有很大帮助。

相关文章

与[转帖]linux中使用script和scriptreplay进行命令操作录制与重放相似的内容:

[转帖]linux中使用script和scriptreplay进行命令操作录制与重放

https://cloud.tencent.com/developer/article/2015118 scriptreplay 用于在终端中,根据 script 命令记录的终端数据文件和时间日志文件,重现当时用户的所有操作和命令的输出信息。简而言之,重现播放当时终端会话发生的一切信息,而不是重新运

[转帖]Linux常用的一些命令,看你知道多少?

https://zhuanlan.zhihu.com/p/115279009 Linux中命令有很多,而Linux系统中使用命令也是它的一大特点。在Linux系统中使用命令处理问题灵活,高效,所以熟知这些命令可以提高你的工作效率,帮助你快速处理问题。 本文列出了一些在Linux系统中经常使用的命令,

[转帖]linux删除文本文件空白行

https://zhuanlan.zhihu.com/p/627152095 sed命令 在Linux中,可以使用sed命令批量删除文本中的空白行。以下是一个示例命令: sed -i '/^$/d' filename.txt 这个命令将会删除 filename.txt 文件中所有的空白行,并且直接在

[转帖]linux删除文本文件空白行

linux删除文本文件空白行https://www.zhihu.com/people/chen-kai-84-54-75 sed命令 在Linux中,可以使用sed命令批量删除文本中的空白行。以下是一个示例命令: sed -i '/^$/d' filename.txt 这个命令将会删除 filena

[转帖]Linux中find命令使用示例

https://zhuanlan.zhihu.com/p/99170116 Linux查找命令是类Unix操作系统中最重要且最常用的命令行实用程序之一。 查找命令可以根据你设定的参数匹配的文件指定的条件来搜索和查找文件或目录的列表。 查找可以在多种条件下使用,例如可以按权限,用户,组,文件类型,日期

[转帖]如何在 Linux 中使用 SCP 安全地传输文件

https://linux.cn/article-15377-1.html 在网络上文件传输可以通过各种不同的方式和协议来完成。远程复制文件最常用的协议是 Rsync、SCP 和 SFTP。在本文中,我们将了解什么是 SCP 以及如何在 Linux 和类 Unix 操作系统中使用 SCP 在本地和远

[转帖]如何在 Linux 中使用ss命令监控网络连接

https://zhuanlan.zhihu.com/p/99421574 ss命令是用于在Linux系统上显示与网络套接字相关的信息的工具。 该工具显示netstat命令的更多详细信息,该命令用于显示活动的套接字连接。 在本教程中,我们会举例说明ss命令如何用于在Linux中显示各种网络连接信息。

[转帖]解析Linux gcore: 揭示程序内存捕获的秘密(linuxgcore)

https://www.dbs724.com/133618.html Linux gcore 是一种在Linux系统中使用命令行工具捕获进程内存内容的方法。它允许程序员制定程序的一个内存快照,从而帮助他们了解在特定时刻,程序的内部状态是什么状态。 通过生成一个进程的Core文件(也称为“内存快照”或

【转帖】Linux中如何取消ln链接?(linuxln取消)

https://www.dbs724.com/163754.html Linux系统使用ln命令可以快速创建链接,ln链接是指把文件和目录链接起来,当改变源时可以快速地改变整个目录下的文件和目录。有时候,某些文件或者目录链接起来不是我们需要的,我们需要使用Linux取消ln链接命令。下面就来简单介绍

[转帖]Linux中查找大文件两种姿势

https://rumenz.com/rumenbiji/linux-find-du-max-file.html 使用find命令查找大文件 find命令是Linux系统管理员工具库中最强大的工具之一。它允许你根据不同的标准(包括文件大小)搜索文件和目录。 例如,如果在当前工作目录中要搜索大小超过1