码迷,mamicode.com
首页 > 其他好文 > 详细

【限速】limit_download.sh

时间:2014-12-24 18:33:26      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:iptables

【限速】limit_download.sh

使用iptables 做简单的限速策略。

#!/bin/bash
#
# limit port 80 download speed.

ACTION=$1
n_port=80
# n_limit * 15/100 KB, 100Mbit/s = 10MB/s = 10 * 1000 KB/s
n_limit=$2
[ ! -z $n_limit ] || n_limit=3000
n_limit_burst=$3
[ ! -z $n_limit_burst ] || n_limit_burst=3000

function add(){
    iptables -A OUTPUT -p tcp -m tcp --sport $n_port -m limit --limit $n_limit/sec --limit-burst $n_limit_burst -j ACCEPT 
    iptables -A OUTPUT -p tcp -m tcp --sport $n_port -j DROP    
    service iptables save
}

function del(){
    iptables -D OUTPUT -p tcp -m tcp --sport $n_port -m limit --limit $n_limit/sec --limit-burst $n_limit_burst -j ACCEPT 
    iptables -D OUTPUT -p tcp -m tcp --sport $n_port -j DROP    
    service iptables save
}

function cls() {
    iptables -F OUTPUT  
    service iptables save
}

function stat() {
    iptables -L -n |sed -n ‘/OUTPUT/,$p‘
}

ACTION=$1

case ${ACTION} in
    add)
        add
        stat
        ;;
    del)
        del
        stat
        ;;
    clear)
        cls
        stat
        ;;
    new)
        cls
        add
        stat
        ;;
    status)
        stat
        ;;
    *)
        cat <<_START
Usage: 
    $0 [add|del|new|clear|status] limit limit_burst 
    [default setting: limit=$n_limit, limit_burst=$n_limit_burst]
eg:
    $0 add              add a rule to OUTPUT Chain. [default]
    $0 del              delete a rule from OUTPUT Chain. [default]
    $0 new              clear->add.
    $0 clear            delete all rules in OUTPUT Chain.
    $0 status           show iptables OUTPUT Chain.
    $0 add 2500 3000    add a rule to OUTPUT Chain.

_START
        ;;
esac


【限速】limit_download.sh

标签:iptables

原文地址:http://nosmoking.blog.51cto.com/3263888/1594650

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!