还有这种骚 *** 作? 教你如何优雅的在 Linux 终端下进行录像

还有这种骚 *** 作? 教你如何优雅的在 Linux 终端下进行录像,第1张

相信大家,初始在使用Linux *** 作系统时,查找历史命令,第一时间会想到history命令:将显示出之前 *** 作过的命令,其无法显示 *** 作过的命令所输出的过程及结果。

但往往有时候,我们却想知道在这台服务器上 *** 作了什么?执行的过程是什么样的?输出的结果又是怎么样的?那history命令就已经无法满足我们的需求了,那究竟该怎么办呢?

是时候,教大家一招了。那就是这个神奇的命令——script和scriptreplay

script命令:可以将 Linux 终端下的会话过程进行录制下来。

作用:在终端下的所有 *** 作、执行过的命令以及输出过的结果都可以在本地进行录制。

script和scriptreplay在 Linux 发行版中默认都有安装的,在本篇文章中,script是可以直接在 *** 作系统下执行的,而scriptreplay需要额外安装。

开始录像

执行如下命令,将在终端下执行任何 *** 作都将会被进行记录;

查看当前目录是否有如下两个文件

test.timefile和test.txt两个文件名可自定义命名。

常用参数选项

执行如下命令,可以静默模式进行运行,且不会将以script和exit进行显示启动和退出;

执行命令exit或使用快捷键Ctrl+D即可退出结束录制;

录制某个目录下脚本执行过程的案例

先编写一个简单的名为xxx.sh的脚本文件,并授予相关权限。

使用参数选项:-c可直接执行命令,而非是交互式的 shell,即可查看该脚本所执行的时间点。

scriptreplay命令:可以将 Linux 终端下录制的结果进行回放。

常用参数选项

执行完上述命令scriptreplay test.timefile test.txt后,将对之前的 *** 作进行回放;

同步使用

使用-f参数选项,部分版本没有该参数,同时也可以使用tail -f命令来进行 *** 作;

如下图所示,需打开两个 xshell 终端,连接至同一台设备,做相关同步使用 *** 作,左屏幕为: *** 作端,右屏幕为:演示端,

在左屏幕终端下执行命令script -f jacktian

在右屏幕终端下执行命令tail -f jacktian

随后,你只需在左屏幕终端下执行相关命令,右屏幕将进行显示出左屏幕的相关输出结果等;

开机自启动

除上述 *** 作以外,还可以采用设置在登录时自动执行script命令,并添加至 shell 环境配置文件中。

递归创建目录/var/log/user_record

编辑文件/etc/profile添加如下自启动配置项

    在Linux中输入命令man tcpdump给出的定义如下所示:

是不是感觉很懵?我们用通俗、形象、学术的表达方式来全方位描述tcpdump:

常用选项如下所示:

1、第一个抓包示例

-i : 指定用来抓包的网络接口,这个参数在服务器有多个网卡的时候非常有效

-nn : 不转换协议和端口号,当tcpdump遇到协议号或端口号,不需要将这些数字转换为对应的协议名称或端口名称,如22端口SSH端口,我们希望显示22,而非SSH

-X : 将协议头和包内容原原本本的显示出来,tcpdump会同时以16进制和ASCII的形式进行显示,在协议分析时非常好用。

'port 22' : 告诉tcpdump要有选择的显示所抓到的包,在该示例中,只显示源端口或目的端口是22的数据包,其他的数据包则不显示。

-c : 用来指定抓包的个数,示例设置的个数为1,则代表仅抓取一个包之后就退出不再抓包了。

2、-e 增加数据链路层的头部信息

    通过两个命令的输出对比,可以看到增加-e选项后,输出的结果中增加MAC地址信息。而且在输出内容中会有 oui Unknown ,OUI即Organizationally unique identifier(组织唯一标识符),在任何一块网卡中烧录的6字节MAC地址中,前3个字节体现了OUI,其表明了网卡的制造组织,通常情况下,该标识符是唯一的。在本例中,由于没有识别出网卡的制造商,因此显示为Unknown。

3、-l 将输出变为行缓冲模式

    -l的作用是将tcpdump的输出行为变为 行缓冲 方式,这样可以保证tcpdump遇到换行符,就立即将缓冲的内容输出到标准输出(stdout),方便利用管道或重定向方式进行后续处理,而不会造成延迟。

    在Linux的标准I/O中提供了 全缓冲 行缓冲 无缓冲 三种缓冲方式。标准错误是不带缓冲的,而终端设备常为行缓冲,其他默认则为全缓冲。

    在该例中,将tcpdump输出的内容通过管道提取第5列,可以用来查看详细的连接信息。而如果不加 -l 选项时,则只有当缓冲区全部占满时,tcpdump才会将缓冲区中的内容输出,这样就有可能导致输出不连续的,如果强行结束,则会影响下一行的完整性。

4、-t 输出不加时间戳

    在增加选项 -t 选项后,时间23:48:03.193526就消失了。tcpdump默认情况下是按微秒来计时,因此最一个时间精确到了第6位。

5、 -v 显示详细信息

    在增加 -v 选项后,会在输出的内容中增加 tos ttl id offset 协议编号 总长度 等,如需要理解这些信息,就需要了解TCP/IP协议中的头的具体定义了。

6、-F 指定过滤表达式所在的文件

    在第一个示例中,命令行增加了 'port 22' ,而这一项就叫 过滤条件 ,如果设置了过滤条件,则tcpdump只抓取满足过滤条件的数据包。如需要设置较为复杂的过滤条件或复用过滤条件时,这时可以将过滤条件保存为文件,然后通过-F加载该过滤文件。

7、 -w 将原始数据包信息保存到文件中

    当我们查看保存的文件时,出现的是乱码。则代表无法直接查看,很有可能是二进制文件。那么怎么查看保存的文件了?请看下一个示例。

7、 -r 从文件中读取原始数据包

    通过-w和-r选项即可实现抓包的录制回放功能。

linux上有两种比较好的抓包工具:ethereal和tcpdump

对于ethereal,有图形界面和字符界面两种方式。

到linux系统上执行rpm -qa | grep ethereal-gnome可查看是否安装了图形版本

但是如果服务器上没有xwin图形环境,那么就只能用字符界面了

命令:tethereal

可选参数:-V、-f

如果只执行tethereal,那么将只抓取数据包的包头,不显示里边的内容。加上-V参数后,即可显示内容。

-f 参数用于过滤,默认情况下将抓取tcp和udp所有协议。

如果想抓取UDP数据包并显示内容,则执行tethereal -V -f udp 即可

另外还可以配合grep命令提取需要的关键内容

tcudump命令是另外一个有用的工具,只能在字符下使用,

tcpdump -n -nn -vv -XX -tttt -c 10 -e

参数:

-n:数字端口

-nn:数字地址

-vv:输出详细信息

-c:抓取包的数量

-e:打印以太网报头信息

-i:选择适配器


欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/yw/8482186.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-16
下一篇2023-04-16

发表评论

登录后才能评论

评论列表(0条)

    保存