tcpdump定时定量抓包
TCPDUMP定时定量抓包
假设我们用xshell
远程连接服务器,需要获取一段时间内的数据包,且由于硬盘大小有效,需要限制抓取的数据包文件的大小,应该怎么做?
nohup
xshell
远程连接服务器的情况下,如果退出,那么进程就不能正常运行,所以要使用nohup
命令。nohup
是一个 Unix 和 Linux 系统上的命令,它用于在退出 shell 或终端后继续运行命令。当使用 nohup
命令启动程序时,该程序的输出默认会被重定向到一个名为 nohup.out
的文件。
nohup
的基本用法是:
1 | nohup command & |
不要忽略了最后面的’&’
比如创建一个append_i.sh
文件:
1 |
|
-lt
检查一个值是否小于另一个值,在一个小时内,每隔一分钟对1.txt
进行一次写入。
用nohup
运行:
nohup bash append_i.sh &
此时使用bash
的原因是:Ubuntu 的 /bin/sh
实际上是指向 dash
,而 dash
是比 Bash 更轻量级的 shell,但它不支持所有 Bash 的特性。使用 nohup
运行脚本时,它可能会默认使用 /bin/sh
(即 dash
)来运行,从而导致错误。之前直接./append_i.sh发生了错误。
关闭xshell
终端,重新连接一次,仍然可以在进程中搜索到:
抓包
要实现tcpdump定时定量抓包的功能,仅仅依靠tcpdump自带的功能是不够的。可以写一个脚本,启动tcpdump以后,开启记时同时监控生成的pcap
文件,大小大于我们规定的值时停止tcpdump进程。
cap.sh
:
1 |
|
$!
是一个特殊的 shell 变量,代表最后一个被放到后台执行的命令的进程 ID。
用nohup
启动这个脚本即可,最好加上sudo
:
1 | sudo nohup bash cap.sh & |