62 lines
1.4 KiB
Bash
Executable File
62 lines
1.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
type function > /dev/null 2>&1
|
|
[ 0 -ne $? ] && echo 'Run with bash.' && exit 3
|
|
[ 1 -lt $# ] && echo "Usage: $0 [seconds]" && exit 1
|
|
[[ ! "$2" =~ ^[0-9]*$ ]] && "Usage: $0 [seconds]" && exit 2
|
|
|
|
CONF='/tmp/ipflow.conf'
|
|
|
|
function deal_forward {
|
|
for ip in $(cat $CONF); do
|
|
iptables -$1 FORWARD -s $ip -j COLBEN_UPLOAD
|
|
iptables -$1 FORWARD -d $ip -j COLBEN_DOWNLOAD
|
|
done
|
|
}
|
|
|
|
function insert_forward {
|
|
cat /proc/net/arp | grep '^10' | grep -v '00:00:00:00:00:00' | awk '{print $1}' > $CONF
|
|
deal_forward I
|
|
}
|
|
|
|
function clean_forward {
|
|
[ ! -f "$CONF" ] && return 0
|
|
deal_forward D
|
|
rm -f $CONF
|
|
}
|
|
|
|
function show_result {
|
|
clear
|
|
echo 'Download:'
|
|
iptables -nvxL FORWARD | grep COLBEN_DOWNLOAD | awk "{printf(\"%-4dKB/s:%-10s \n\",\$2/1024/$1,\$9)}" | sort -t: -r
|
|
echo -e '\033[s\033[1;25HUpload:'
|
|
line_num=1
|
|
iptables -nvxL FORWARD | grep COLBEN_UPLOAD | awk "{printf(\"%-4dKB/s:%-10s\n\",\$2/1024/$1,\$8)}" | sort -t: -r | while read line; do
|
|
let "line_num=1+$line_num"
|
|
echo -e "\033[$line_num;25H$line"
|
|
done
|
|
echo -e '\033[u'
|
|
sleep $1
|
|
}
|
|
|
|
function quit {
|
|
clean_forward
|
|
iptables -X COLBEN_UPLOAD
|
|
iptables -X COLBEN_DOWNLOAD
|
|
exit 0
|
|
}
|
|
|
|
iptables -N COLBEN_UPLOAD
|
|
iptables -N COLBEN_DOWNLOAD
|
|
|
|
trap "quit" 2 3 15
|
|
|
|
while :; do
|
|
insert_forward
|
|
iptables -Z FORWARD
|
|
show_result ${1:-2}
|
|
clean_forward
|
|
sleep 1
|
|
done
|
|
|