天天看點

【限速】limit_download.sh

【限速】limit_download.sh

使用iptables 做簡單的限速政策。

<code>#!/bin/bash</code>

<code>#</code>

<code># limit port 80 download speed.</code>

<code>ACTION=$1</code>

<code>n_port=80</code>

<code># n_limit * 15/100 KB, 100Mbit/s = 10MB/s = 10 * 1000 KB/s</code>

<code>n_limit=$2</code>

<code>[ ! -z $n_limit ] || n_limit=3000</code>

<code>n_limit_burst=$3</code>

<code>[ ! -z $n_limit_burst ] || n_limit_burst=3000</code>

<code>function</code> <code>add(){</code>

<code>    </code><code>iptables -A OUTPUT -p tcp -m tcp --sport $n_port -m limit --limit $n_limit</code><code>/sec</code> <code>--limit-burst $n_limit_burst -j ACCEPT </code>

<code>    </code><code>iptables -A OUTPUT -p tcp -m tcp --sport $n_port -j DROP    </code>

<code>    </code><code>service iptables save</code>

<code>}</code>

<code>function</code> <code>del(){</code>

<code>    </code><code>iptables -D OUTPUT -p tcp -m tcp --sport $n_port -m limit --limit $n_limit</code><code>/sec</code> <code>--limit-burst $n_limit_burst -j ACCEPT </code>

<code>    </code><code>iptables -D OUTPUT -p tcp -m tcp --sport $n_port -j DROP    </code>

<code>function</code> <code>cls() {</code>

<code>    </code><code>iptables -F OUTPUT  </code>

<code>function</code> <code>stat() {</code>

<code>    </code><code>iptables -L -n |</code><code>sed</code> <code>-n </code><code>'/OUTPUT/,$p'</code>

<code>case</code> <code>${ACTION} </code><code>in</code>

<code>    </code><code>add)</code>

<code>        </code><code>add</code>

<code>        </code><code>stat</code>

<code>        </code><code>;;</code>

<code>    </code><code>del)</code>

<code>        </code><code>del</code>

<code>    </code><code>clear</code><code>)</code>

<code>        </code><code>cls</code>

<code>    </code><code>new)</code>

<code>    </code><code>status)</code>

<code>    </code><code>*)</code>

<code>        </code><code>cat</code> <code>&lt;&lt;_START</code>

<code>Usage: </code>

<code>    </code><code>$0 [add|del|new|</code><code>clear</code><code>|status] limit limit_burst </code>

<code>    </code><code>[default setting: limit=$n_limit, limit_burst=$n_limit_burst]</code>

<code>eg:</code>

<code>    </code><code>$0 add              add a rule to OUTPUT Chain. [default]</code>

<code>    </code><code>$0 del              delete a rule from OUTPUT Chain. [default]</code>

<code>    </code><code>$0 new              </code><code>clear</code><code>-&gt;add.</code>

<code>    </code><code>$0 </code><code>clear</code>            <code>delete all rules </code><code>in</code> <code>OUTPUT Chain.</code>

<code>    </code><code>$0 status           show iptables OUTPUT Chain.</code>

<code>    </code><code>$0 add 2500 3000    add a rule to OUTPUT Chain.</code>

<code>_START</code>

<code>esac</code>

本文轉自 pcnk 51CTO部落格,原文連結:http://blog.51cto.com/nosmoking/1594650,如需轉載請自行聯系原作者

繼續閱讀