first commit
This commit is contained in:
61
常用脚本/ipflow
Executable file
61
常用脚本/ipflow
Executable file
@@ -0,0 +1,61 @@
|
||||
#!/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
|
||||
|
Reference in New Issue
Block a user