pcap 파일에 있는 모든 패킷의 합계

pcap 파일에 있는 모든 패킷의 합계

pcap 파일에 캡처된 패킷 수를 계산하기 위해 간단한 bash 스크립트를 만들려고 합니다. tcpdump를 사용하여 각 pcap 파일에서 패킷을 가져오고 bash 스크립트를 사용하여 추가하고 있지만 작동하지 않는 것 같습니다.

#!/bin/bash
FILES=/share/capture/*.pcap
sum =0
for f in $FILES
 do
  output=$(sudo tcpdump -r $f 2> /dev/null |wc -l)
  sum = $((output+ sum))
done
echo $sum

내가 뭘 잘못하고 있는지 말해 줄 수 있나요?

답변1

wc -l모든 파일의 출력을 실행하십시오 .

#!/bin/bash -
files=(/share/capture/*.pcap)

for f in "${files[@]}"; do
  tcpdump -qr "$f" 2> /dev/null
done | wc -l

또한보십시오:

capinfos -rTc "${files[@]}"

capinfos -rTc "${files[@]}" | cut -f2 | paste -sd + | bc

(파일 이름에 TAB 또는 NL 문자가 포함되어 있지 않다고 가정).

행동을 조심하세요:

FILES=/share/capture/*.pcap

/share/capture/*.pcap파일 목록 대신 문자열을 할당하고 있습니다 $FILES. 따옴표 없이 인용 하면 $FILES전역 패턴이 확장됩니다(분할+전역운영자). 나중에 $f따옴표를 생략할 수도 있으므로 분할+글로브 연산자를 다시 호출하세요. 따라서 $f공백 문자나 기타 와일드카드가 포함되면 다른 파일로 다시 확장됩니다. 여기서는 배열을 사용하고 모든 변수를 참조하는 것이 좋습니다.

답변2

#!/bin/bash                                                                                                                                                                                                                                  
files=(/share/capture/*.pcap)
#echo $files
sum=0
for f in "${files[@]}"
do
  output=`sudo tcpdump -r $f 2> /dev/null | wc -l`
  sum=$((output + sum))
done
echo $sum

관련 정보