如何编写脚本自动化执行指定tshark命令生成pcap与csv文件?
我来帮你搞定这个tshark命令的自动化脚本!你手动执行的命令已经能完美生成.pcap和.csv文件,现在把它封装成脚本就能一键完成操作了,下面给你分不同操作系统的实现方案:
Bash脚本(Linux/macOS 适用)
你可以创建一个.sh脚本,把下面的内容放进去,轻松实现自动化:
#!/bin/bash # 定义文件名变量,你可以直接修改这里的名字,或者改成脚本参数 FILE_NAME="my_capture" # 执行tshark命令 tshark -T fields -e _ws.col.No -e _ws.col.Time -e _ws.col.Source -e _ws.col.Destination -e _ws.col.Protocol -e _ws.col.Length -e _ws.col.Info -w "${FILE_NAME}.pcap" > "${FILE_NAME}.csv"
使用说明:
- 把上面的内容保存成
capture.sh - 给脚本添加执行权限:
chmod +x capture.sh - 运行脚本:
./capture.sh - 如果想每次用不同的文件名,也可以改成接受参数的版本,比如:
#!/bin/bash # 检查是否传入了文件名参数 if [ $# -ne 1 ]; then echo "用法: $0 <文件名前缀>" exit 1 fi FILE_NAME="$1" tshark -T fields -e _ws.col.No -e _ws.col.Time -e _ws.col.Source -e _ws.col.Destination -e _ws.col.Protocol -e _ws.col.Length -e _ws.col.Info -w "${FILE_NAME}.pcap" > "${FILE_NAME}.csv"
这样运行时就能指定文件名:./capture.sh my_new_capture
PowerShell脚本(Windows 适用)
如果是Windows系统,用PowerShell脚本更贴合系统环境,内容如下:
# 定义文件名,修改这里或者改成参数 $fileName = "my_capture" # 执行tshark命令 tshark -T fields -e _ws.col.No -e _ws.col.Time -e _ws.col.Source -e _ws.col.Destination -e _ws.col.Protocol -e _ws.col.Length -e _ws.col.Info -w "${fileName}.pcap" > "${fileName}.csv"
使用说明:
- 保存成
Capture.ps1 - 打开PowerShell,导航到脚本所在目录
- 运行脚本:
.\Capture.ps1 - 同样可以改成支持参数的版本:
param( [Parameter(Mandatory=$true)] [string]$FileName ) tshark -T fields -e _ws.col.No -e _ws.col.Time -e _ws.col.Source -e _ws.col.Destination -e _ws.col.Protocol -e _ws.col.Length -e _ws.col.Info -w "${FileName}.pcap" > "${FileName}.csv"
运行时指定文件名:.\Capture.ps1 -FileName my_new_capture
额外注意事项:
- 确保
tshark已经添加到系统的环境变量PATH里,如果没加,你需要在脚本里写tshark的完整路径,比如C:\Program Files\Wireshark\tshark.exe(Windows)或者/usr/bin/tshark(Linux) - 如果是捕获实时流量,可能需要管理员/root权限运行脚本,不然tshark可能无法访问网络接口
- 如果你是要捕获特定接口,可以在命令里加
-i <接口名>参数,比如tshark -i eth0 ...
内容的提问来源于stack exchange,提问作者Bat
相关产品推荐
相关产品推荐

