Bug #3334 » iftop_parser.sh
1 |
#!/bin/sh
|
---|---|
2 |
|
3 |
# Usage
|
4 |
if [ $# -ne 1 ]; then |
5 |
echo "Usage : $0 iface" |
6 |
exit
|
7 |
fi
|
8 |
|
9 |
# files paths
|
10 |
pid_file=/var/run/iftop_$1.pid |
11 |
cache_file=/var/db/iftop_$1.log |
12 |
awk_script=/root/iftop_parse.awk |
13 |
|
14 |
# Binaries paths
|
15 |
DATE=/bin/date |
16 |
STAT=/usr/bin/stat |
17 |
CUT=/usr/bin/cut |
18 |
PS=/bin/ps |
19 |
GREP=/usr/bin/grep |
20 |
CAT=/bin/cat |
21 |
RM=/bin/rm |
22 |
IFTOP=/usr/local/sbin/iftop |
23 |
AWK=/usr/bin/awk |
24 |
|
25 |
# test if pid file exist
|
26 |
if [ -f $pid_file ]; then |
27 |
# check how old is the file
|
28 |
curTS=`$DATE +%s` |
29 |
pidTS=`$STAT -r $pid_file | $CUT -d " " -f 10` |
30 |
# if more than 10 seconds,
|
31 |
# it must be a dead pid file (process killed?)
|
32 |
# or a stucked process that we should kill
|
33 |
if [ $(( curTS - pidTS )) -gt 10 ]; then |
34 |
oldPID=`$CAT $pid_file` |
35 |
# test if pid still exist
|
36 |
run=`$PS -p $oldPID | $GREP -F '$0'` |
37 |
if [ "$run" != "" ]; then |
38 |
kill -9 $oldPID |
39 |
fi
|
40 |
$RM $pid_file |
41 |
$RM $cache_file |
42 |
exit
|
43 |
fi |
44 |
if [ -f $cache_file ]; then |
45 |
$CAT $cache_file |
46 |
fi
|
47 |
exit |
48 |
fi
|
49 |
|
50 |
echo -n $$ > $pid_file |
51 |
|
52 |
$IFTOP -nNb -i $1 -s 1 -o 2s -t 2>> /dev/null | $AWK -f $awk_script > $cache_file.1 |
53 |
$CAT $cache_file.1 > $cache_file |
54 |
$CAT $cache_file |
55 |
$RM $pid_file |