เพื่อเพิ่มสคริปต์การทุบตีที่ยอดเยี่ยมของ Sebastian Haas ฉันต้องทำให้บทของเขาง่ายขึ้นเพราะมันล้มเหลวในบรรทัดtcpdump -l $@ | sed 's/^/[Interface:'"${BASH_REMATCH[0]:2}"'] /' &
นี้
แม้ว่ามันจะไม่ยืดหยุ่นเหมือนสคริปต์ต้นฉบับ แต่มันก็มีแนวโน้มที่จะทำงานในระบบลินุกซ์ที่ล้มลง
#!/bin/sh
interfaces="eth0 ip6tnl1" # Interfaces list separated by whitespace
#===================================================================================
#
# FILE: dump-stripped.sh
# USAGE: dump.sh [tcpdump-parameters]
# DESCRIPTION: tcpdump on any interface and add the prefix [Interace:xy] in
# front of the dump data. Simplified to work in more limited env.
# OPTIONS: similar to tcpdump
# REQUIREMENTS: tcpdump, sed, ifconfig, kill, awk, grep, posix regex matching
# AUTHOR: Sebastian Haas (Stripped down By Brian Khuu)
#
#===================================================================================
# When this exits, exit all background processes:
trap 'kill $(jobs -p) &> /dev/null && sleep 0.2 && echo ' EXIT
# Create one tcpdump output per interface and add an identifier to the beginning of each line:
for interface in $interfaces;
do tcpdump -l -i $interface -nn $@ | sed 's/^/[Interface:'"$interface"'] /' 2>/dev/null & done;
# wait .. until CTRL+C
wait;
นอกจากนี้คุณยังอาจสนใจในการออกบัตรฯ GitHub ปัจจุบันเกี่ยวกับการละเลยคุณลักษณะนี้ในhttps://github.com/the-tcpdump-group/tcpdump/issues/296
-e
พิมพ์ที่อยู่ MAC หนึ่งรายการในแต่ละบรรทัดเท่านั้น สำหรับแพ็กเก็ตที่เข้ามามันเป็น MAC ต้นทางที่ไม่มีประโยชน์มากในการระบุว่าอินเทอร์เฟซใดที่มาถึง