Dumpcap 是 Wireshark 套件中的一个轻量级命令行数据包捕获工具,非常适合实现自动化数据包捕获。以下是几种实现自动化的方法:
# 基本捕获命令(捕获100个包后停止)
dumpcap -i eth0 -c 100 -w output.pcap
# 按时间捕获(捕获60秒)
dumpcap -i eth0 -a duration:60 -w output.pcap
# 按文件大小捕获(每100MB轮换文件)
dumpcap -i eth0 -b filesize:100000 -w output_%Y%m%d_%H%M%S.pcap
#!/bin/bash
INTERFACE="eth0"
DURATION="300" # 5分钟
OUTPUT_DIR="/var/captures"
LOG_FILE="/var/log/pcap_capture.log"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
OUTPUT_FILE="${OUTPUT_DIR}/capture_${TIMESTAMP}.pcap"
# 创建目录(如果不存在)
mkdir -p $OUTPUT_DIR
# 执行捕获
echo "$(date) - 开始捕获数据包到 ${OUTPUT_FILE}" >> $LOG_FILE
dumpcap -i $INTERFACE -a duration:$DURATION -w $OUTPUT_FILE >> $LOG_FILE 2>&1
echo "$(date) - 捕获完成" >> $LOG_FILE
# 编辑crontab
crontab -e
# 添加以下行(每小时运行一次)
0 * * * * /path/to/your_script.sh
# 基于文件大小和时间组合轮换
dumpcap -i eth0 -b filesize:100000 -b duration:3600 -w capture_%Y%m%d_%H%M%S.pcap
# 只捕获HTTP流量(端口80)
dumpcap -i eth0 -f "tcp port 80" -w http_traffic.pcap
# 捕获特定IP的流量
dumpcap -i eth0 -f "host 192.168.1.100" -w host_traffic.pcap
# 通过SSH在远程主机上捕获
ssh user@remotehost "dumpcap -i eth0 -w -" > local_capture.pcap
import subprocess
import time
from datetime import datetime
def capture_packets(interface, duration, output_file):
cmd = ["dumpcap", "-i", interface, "-a", f"duration:{duration}", "-w", output_file]
process = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
print(f"开始捕获数据包到 {output_file}...")
stdout, stderr = process.communicate()
if process.returncode == 0:
print("捕获完成")
else:
print(f"捕获失败: {stderr.decode()}")
if __name__ == "__main__":
interface = "eth0"
duration = 300 # 5分钟
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
output_file = f"capture_{timestamp}.pcap"
capture_packets(interface, duration, output_file)
# 当网络利用率超过阈值时开始捕获
#!/bin/bash
THRESHOLD=80 # 80% 网络利用率
INTERFACE="eth0"
DURATION=600 # 捕获10分钟
# 检查网络利用率
utilization=$(ifstat -i $INTERFACE 1 1 | tail -1 | awk '{print $1}')
if (( $(echo "$utilization > $THRESHOLD" | bc -l) )); then
timestamp=$(date +%Y%m%d_%H%M%S)
dumpcap -i $INTERFACE -a duration:$DURATION -w "high_util_${timestamp}.pcap"
fi
通过以上方法,您可以构建一个灵活、可靠的数据包捕获自动化系统,满足各种网络监控和分析需求。