Linux主机限速
使用腳本實現(xiàn)主機間流量限制
1.腳本使用命令
bash tc.bash {start|stop|restart|show} tc.bash寫絕對路徑2.關鍵點
TC=/sbin/tc IF=ens33 # 網(wǎng)卡名稱eth0,ens33 DNLD=1mbit # DOWNLOAD Limit UPLD=1mbit # UPLOAD Limit IP=192.168.171.176 # 此處寫本機IP,即限制所有主機訪問本機的流量;如果填寫固定IP,即限制該IP到本機的流量 U32="$TC filter add dev $IF protocol ip parent 1:0 prio 1 u32"3.測試
主機A(192.168.1.10)需要拷貝主機B(192.168.1.20)的/tmp/tomcat7.tar.gz,需要進行限速
4.操作方法:
4.1.主機B部署tc.bash,腳本中IP=192.168.1.10,只限制主機A的下載速度,此時其他主機通過scp等方式拷貝主機B的數(shù)據(jù),速度不受影響;
4.2.主機B部署tc.bash,腳本中IP=192.168.1.20(本機IP),此時限制所有主機從本機下載或傳輸數(shù)據(jù)的速度;
備注:如果有兩臺主機需要互相限速,但是不限制其他主機,可以在兩臺主機同時部署tc.bash,然后IP填寫對方主機即可.
腳本原文:
#!/bin/bash # # tc uses the following units when passed as a parameter. # kbps: Kilobytes per second # mbps: Megabytes per second # kbit: Kilobits per second # mbit: Megabits per second # bps: Bytes per second # Amounts of data can be specified in: # kb or k: Kilobytes # mb or m: Megabytes # mbit: Megabits # kbit: Kilobits # To get the byte figure from bits, divide the number by 8 bit # TC=/sbin/tc IF=ens33 # Interface DNLD=1mbit # DOWNLOAD Limit UPLD=1mbit # UPLOAD Limit IP=192.168.1.176 # Host IP U32="$TC filter add dev $IF protocol ip parent 1:0 prio 1 u32"start() {$TC qdisc add dev $IF root handle 1: htb default 30$TC class add dev $IF parent 1: classid 1:1 htb rate $DNLD$TC class add dev $IF parent 1: classid 1:2 htb rate $UPLD$U32 match ip dst $IP/32 flowid 1:1$U32 match ip src $IP/32 flowid 1:2}stop() {$TC qdisc del dev $IF root}restart() {stopsleep 1start}show() {$TC -s qdisc ls dev $IF}case "$1" instart)echo -n "Starting bandwidth shaping: "startecho "done";;stop)echo -n "Stopping bandwidth shaping: "stopecho "done";;restart)echo -n "Restarting bandwidth shaping: "restartecho "done";;show)echo "Bandwidth shaping status for $IF:\n"showecho "";;*)pwd=$(pwd)echo "Usage: $(/usr/bin/dirname $pwd)/tc.bash {start|stop|restart|show}";;esacexit 0總結
- 上一篇: Android画正N边形战力图
- 下一篇: 奖学金申请模板