Portál AbcLinuxu, 7. listopadu 2025 08:23
#! /bin/sh
# umisteni klienskych ip
IP_PATH="/etc/users/users.txt"
DOWNLOAD=2000kbit
UPLOAD=2000kbit
GARANTDOWN=50kbit
GARANTUPLOAD=50kbit
shaping_up() {
echo ""
echo "Mazu predchozi nastaveni"
tc qdisc del dev eth0 root &> /dev/null
tc qdisc del dev eth1 root &> /dev/null
tc qdisc add dev eth0 root handle 1: htb default 9999 r2q 100
tc qdisc add dev eth1 root handle 1: htb default 9999 r2q 100
# propustnost internetu
tc class add dev eth0 parent 1:0 classid 1:1 htb rate ${UPLOAD} prio 1
tc class add dev eth1 parent 1:0 classid 1:1 htb rate ${DOWNLOAD} prio 1
# QOS
line=` wc -l $IP_PATH | awk '{print $1}'`
x=1
while [ "$x" -le $line ]; do
a=`sed -n $x\p $IP_PATH | awk '{print $1}'`
if [ $a = \# ]; then
false
else
ip=`sed -n $x\p $IP_PATH | awk '{print $2}'`
upload=`sed -n $x\p $IP_PATH | awk '{print $4}'`
download=`sed -n $x\p $IP_PATH | awk '{print $3}'`
data="$(expr $x + 1000) $base"
# Level 1 subclases (HTB)
tc class add dev eth1 parent 1:1 classid 1:1${x} htb rate ${GARANTDOWN} ceil ${download}
tc filter add dev eth1 parent 1: protocol ip prio 10 u32 match ip dst ${ip} flowid 1:1${x}
tc class add dev eth0 parent 1:1 classid 1:1${x} htb rate ${GARANTUPLOAD} ceil ${upload}
tc filter add dev eth0 parent 1: protocol ip prio 10 u32 match ip src ${ip} flowid 1:1${x}
fi
x=$(expr $x + 1)
done
# P2P shaping
tc class add dev eth0 parent 1:1 classid 1:8999 htb rate 500kbit ceil 1000kbit
tc class add dev eth1 parent 1:1 classid 1:8999 htb rate 500kbit ceil 1000kbit
i=1
for i in $(seq 9);do
tc filter add dev eth0 parent 1:0 protocol ip prio 2 handle $i fw classid 1:8999
tc filter add dev eth1 parent 1:0 protocol ip prio 2 handle $i fw classid 1:8999
done
#P2P konec
##################################################################
# Ostatni IP
tc class add dev eth0 parent 1:1 classid 1:9999 htb rate 50kbit
tc class add dev eth1 parent 1:1 classid 1:9999 htb rate 50kbit
tc filter add dev eth0 parent 1: protocol ip prio 10 u32 match ip src 0.0.0.0/0 flowid 1:9999
tc filter add dev eth1 parent 1: protocol ip prio 10 u32 match ip dst 0.0.0.0/0 flowid 1:9999
echo ""
echo "Vse nastaveno :)"
echo ""
}
shaping_down() {
echo -e "Zastavuji shapovani klientu ... "
tc qdisc del dev eth0 root &> /dev/null
tc qdisc del dev eth1 root &> /dev/null
echo -e "Shapov▒n▒ zastaveno ... "
}
case "$1" in
'start')
shaping_up
;;
'stop')
shaping_down
;;
'--help')
echo -e "\nPouziti: $0 start|stop\n"
echo -e "$0 start => zapne shaping"
echo -e "$0 stop => vypne shaping"
echo -e "$0 --help => vypise tuto napovedu\n"
;;
* )
echo -e "\nPouziti: $0 start|stop\n"
echo -e "Napoveda: $0 --help\n"
esac
sed 's/#.*$//;s/^ *//;s/ *$//;/^$/d' < $input_file | \
while read parametr1 parametr2 parametr3 parametr4; do
echo "1=$parametr1"
echo "2=$parametr2"
echo "3=$parametr3"
echo "4=$parametr4"
done
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.