Portál AbcLinuxu, 5. května 2025 05: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.