如何通过tcpdump expression仅采集VLAN Tag ID?
如何通过tcpdump expression仅采集VLAN Tag ID?
嗨J!刚好我对这个场景挺熟悉的,给你分享几个实用的方法,帮你快速拿到接口上的VLAN标签ID列表:
基础提取法:先让tcpdump捕获所有带VLAN标签的流量,同时显示链路层信息,再用awk提取VLAN ID
执行命令:tcpdump -i <你的接口名称> -e 'vlan' | awk '{print $4}'解释下:
-e参数会让tcpdump输出链路层的细节,其中VLAN ID会以vlan XXX,的格式出现在输出里,awk提取第4个字段就能拿到纯ID啦。要是你发现字段位置不对,调整一下awk的数字就行~灵活适配法:如果担心不同环境下字段位置有变化,可以用更智能的匹配方式
执行命令:tcpdump -i <你的接口名称> -n -e -t 'vlan' | awk '{for(i=1;i<=NF;i++) if($i~/vlan/) print $(i+1)}'这个命令会自动找到包含“vlan”的字段,然后输出它后面紧跟的数值,也就是VLAN ID,适配性更强。
去重整理法:要是你想得到当前接口上所有唯一的活跃VLAN ID,可以再加个排序去重的步骤
执行命令:tcpdump -i <你的接口名称> -e 'vlan' | awk '{print $4}' | sort -u跑完这个就能得到一份干净的、没有重复的VLAN ID列表了。
小提醒:要是你平时是抓VLAN子接口(比如eth0.100这种)的流量,那是看不到VLAN标签的——因为子接口已经把标签剥离了,得抓对应的主接口才行哦!
备注:内容来源于stack exchange,提问作者user3223819
相关产品推荐
相关产品推荐

