写一个Linux服务器自动tcpdum抓包脚本

1、写一个定时tcpdump抓包的sh脚本,方便我们对一些定时的任务数据分析包情况脚本代码放到了下面,给大家说明下里面参数

HOST:抓包过滤主机IP地址

PORT:抓包过滤端口(不需要可以注释掉)

INTERFACE:抓包网卡,any指的是所有网卡,也可指定网卡如:ens1,eth0之类

DURATION:抓包时长300S

OUTPUT_DIR:抓包文件保存路径/data

LOG_FILE:抓包脚本操作日志保存路径/var/log/tcpdump_pcap.log

只需要根据需求修改上述参数就可以,其他的可不用动

bash 复制代码
#!/bin/bash

HOST="192.168.10.1"
PORT="1468"
INTERFACE="any"
DURATION=300  #5分钟
OUTPUT_DIR="/data"
LOG_FILE="/var/log/tcpdump_pcap.log"

TIMESTAMP=$(date '+%Y%m%d_%H%M%S')
OUTPUT_FILE="${OUTPUT_DIR}/pcap_${TIMESTAMP}.pcap"

#开始时间
echo "$(date '+%Y-%m-%d %H:%M:%S') - 开始抓包: host $HOST port $PORT" >> $LOG_FILE

# 执行tcpdump5分钟
timeout $DURATION /usr/sbin/tcpdump -i $INTERFACE host $HOST and port $PORT -vv -w $OUTPUT_FILE

# 检查命令执行结果
if [ $? -eq 0 ]; then
    echo "$(date '+%Y-%m-%d %H:%M:%S') - 抓包完成: $OUTPUT_FILE" >> $LOG_FILE
    
    # 获取文件大小
    FILE_SIZE=$(du -h $OUTPUT_FILE | cut -f1)
    echo "$(date '+%Y-%m-%d %H:%M:%S') - 文件大小: $FILE_SIZE" >> $LOG_FILE
else
    echo "$(date '+%Y-%m-%d %H:%M:%S') - 抓包失败或超时" >> $LOG_FILE
fi

2、我们创建好tcpdump_pcap.sh脚本就可以创建我们的定时任务了

bash 复制代码
crontab -e

添加定时任务如下每天凌晨5点开始执行抓包脚本,可以根据需求自行修改前面时间(0 5 * * *),时间不知道怎么写可以百度例:(crontab每小时执行一次时间格式)

bash 复制代码
0 5 * * * bash /root/tcpdump_pcap.sh
相关推荐
哎呦,帅小伙哦6 小时前
Linux系统中/proc/diskstats文件字段解析
linux
xiaoxiangsiyan6 小时前
企业网络运维自动化与管理协议深度指南
linux·运维·服务器·网络·学习·自动化
我是小灰灰吖6 小时前
Ubuntu22.04,OpenCV 4.5.5 环境搭建
linux·qt·ubuntu
七仔啊6 小时前
windows server 2022 安装 Linux Docker
linux·windows·docker
AIgorithmGEEK6 小时前
Linux 进程控制完全指南:fork、wait、exec 三部曲
linux·运维·多进程·进程创建·进程等待·进程终止·exec家族
2301_777998346 小时前
网络基础(一):协议与网络传输基本流程
linux·网络
小张同学a.6 小时前
zabbix企业级监控平台4——分布式监控与grafana数据可视化
linux·运维·数据库·分布式·信息可视化·zabbix·grafana
Darkwanderor6 小时前
线程概念和Linux线程
linux·c语言·c++
酷可达拉斯7 小时前
自动化运维-从零开始编写ansible剧本(二)
linux·运维·服务器·centos·自动化
Darkwanderor7 小时前
Linux线程控制
linux·c语言·c++