source: tools/traceends/tracetopends @ c29a0e0

4.0.1-hotfixescachetimestampsdevelopdpdk-ndagetsilivegetfragoffhelplibtrace4ndag_formatpfringrc-4.0.1rc-4.0.2rc-4.0.3rc-4.0.4ringdecrementfixringperformanceringtimestampfixes
Last change on this file since c29a0e0 was c29a0e0, checked in by Shane Alcock <salcock@…>, 9 years ago
  • Started adding a new libtrace tool (tracetopends) which can be used to easily find the endpoints that are contributing the most traffic in a network. An endpoint can be either an IPv4 address, IPv6 address or a MAC address and output can be sorted by packet count, byte count or payload byte count.

Hopefully this will make Chris happy... :)

NOTE: manpages are just copies from tracesplit - remember to update them before release!

  • Property mode set to 100755
File size: 1.8 KB
Line 
1#!/bin/bash
2
3if [ $# -lt 1 ]; then
4        echo usage: $0 [options] inputuri...
5        echo See manpage for more details.
6        exit
7fi
8
9top_count=10
10send=1
11sort="bytes"
12filter=""
13addr="v4"
14
15while getopts "f:sdn:bapA:" opt; do
16        case $opt in
17                A)
18                        addr=$OPTARG
19                        ;;
20                f)
21                        filter=$OPTARG
22                        ;;
23                s)
24                        send=1
25                        ;;
26                d)
27                        send=0
28                        ;;
29                n)
30                        top_count=$OPTARG
31                        ;;
32                b)
33                        sort="bytes"
34                        ;;
35                a)
36                        sort="app"
37                        ;;
38                p)
39                        sort="pkts"
40                        ;;
41                /?)
42                        echo "Invalid option: -$OPTARG"
43                        exit 1
44                        ;;
45                :)
46                        echo "Option -$OPTARG requires an argument"
47                        exit 1
48                        ;;
49        esac
50done
51
52sort_index=0
53
54if [ $send = 1 ]; then
55        if [ $sort = "bytes" ]; then
56                sort_index=4
57        elif [ $sort = "pkts" ]; then
58                sort_index=3
59        else
60                sort_index=5
61        fi
62fi
63       
64if [ $send = 0 ]; then
65        if [ $sort = "bytes" ]; then
66                sort_index=7
67        elif [ $sort = "pkts" ]; then
68                sort_index=6
69        else
70                sort_index=8
71        fi
72fi
73
74exec           
75
76shift $(($OPTIND - 1))
77
78if [ $addr = "mac" ]; then
79        printf "%18s %16s %16s %16s %16s %16s %16s %16s\n" \
80        "MAC Address" \
81        "Last Seen" \
82        "Src Pkts" \
83        "Src Bytes" \
84        "Src Payload" \
85        "Dst Pkts" \
86        "Dst Bytes" \
87        "Dst Payload"
88fi
89
90if [ $addr = "v4" ]; then
91        printf "%16s %16s %16s %16s %16s %16s %16s %16s\n" \
92        "IPv4 Address" \
93        "Last Seen" \
94        "Src Pkts" \
95        "Src Bytes" \
96        "Src Payload" \
97        "Dst Pkts" \
98        "Dst Bytes" \
99        "Dst Payload"
100fi
101
102if [ $addr = "v6" ]; then
103        printf "%40s %16s %16s %16s %16s %16s %16s %16s\n" \
104        "IPv6 Address" \
105        "Last Seen" \
106        "Src Pkts" \
107        "Src Bytes" \
108        "Src Payload" \
109        "Dst Pkts" \
110        "Dst Bytes" \
111        "Dst Payload"
112fi
113
114if [ "$filter" = "" ]; then
115        traceends -a $addr $@ | { trap '' int; sort -n -k $sort_index -r -s; } | { trap '' int; head -n $top_count; }
116else
117        traceends -a $addr -f "$filter" $@  | { trap '' int; sort -n -k $sort_index -r -s; } | { trap '' int; head -n $top_count; }
118fi
119
120exit 1
121
Note: See TracBrowser for help on using the repository browser.