PCAP脚本。
我有一台具有32个处理器的服务器,需要最大化此脚本以利用这些处理器。目前,该程序tshark
仅使用1个处理器,因此我需要同时运行多个实例tshark
。当前,以下脚本中定义的循环一次执行1 pcap,这非常慢。我需要一次最多运行15tshark
秒,但是直到循环到达文件末尾时,我最多只能运行15秒。
本质上,脚本读取某些pcap文件并在文本文件中列出pcap,然后使用tshark
进行过滤,然后使用合并mergecap
。
在此示例中,有5个pcap文件要过滤。
#!/ bin / bash #测试脚本以解析pcap文件 #DATE =`日期| awk'{print $ 2}'` 设置-x 回显“开始时间-月/日TIME示例:07/19 08:00” 读-e date1 回声“结束时间-月/日时间示例07/19 08:35” 读-e date2 回显“要过滤的IP地址?” 读-e ip 回声$ ip FIND =`查找/ mnt / pcap / captures / -type f -newermt“ $ date1”!-newermt“ $ date2” | 剪切-c20-40> / home / username / loading_dock / load.txt` #for“ $ {FIND [@]}”中的full_caps 对于我在`cat / home / username / loading_dock / load.txt`中 做 tshark -r / mnt / pcap / captures / $ i“ -Y ip.addr == $ ip” -w / home /用户名/loading_dock/$i.pcap 完毕 mergecap -w / home /用户名/loading_dock/*.pcap -w / home /用户名/test1.pcap rm -rf / home /用户名/loading_dock/*.pcap rm -f / home /用户名/loading_dock/load.txt 出口0
您可以使用GNU Parallel:
parallel -j15 tshark -r /mnt/pcap/captures/{} \'"-Y ip.addr == $ip"\' -w /home/username/loading_dock/{}.pcap :::: /home/username/loading_dock/load.txt
GNU Parallel是一个通用的并行器,使您可以轻松地在具有ssh访问权限的同一台计算机或多台计算机上并行运行作业。
如果要在4个CPU上运行32个不同的作业,并行化的直接方法是在每个CPU上运行8个作业:
相反,GNU Parallel在完成时会产生一个新进程-使CPU保持活动状态,从而节省时间:
安装
出于安全原因,您应该使用软件包管理器安装GNU Parallel,但是如果未将GNU Parallel打包用于您的发行版,则可以进行个人安装,不需要root访问。这样做可以在10秒内完成:
(wget -O - pi.dk/3 || curl pi.dk/3/ || fetch -o - http://pi.dk/3) | bash
有关其他安装选项,请参见http://git.savannah.gnu.org/cgit/parallel.git/tree/README
了解更多
查看更多示例:http : //www.gnu.org/software/parallel/man.html
观看介绍性视频:https : //www.youtube.com/playlist? list =PL284C9FF2488BC6D1
浏览本教程:http : //www.gnu.org/software/parallel/parallel_tutorial.html
注册电子邮件列表以获得支持:https : //lists.gnu.org/mailman/listinfo/parallel
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句