Dik moc za scriptik ale ja som hľadal na Queue tree . Respektíve aj som našiel ,ale nevedel som ako ho rozchodiť.
A preto to tu dávam aby sa nemusel niekto iný s tým tak dlho trápiť :)
Najdôležitejšie je nastaviť NAME v QT napr. u mňa takto :
parent bude name-1
parent bude name-1/p2p
parent bude name-net
parent bude name-net/p2p
Samozrejme 1 znamená poradové číslo čiže ďalší riadok bude 2atd...
FUP priorita
# specialny FUP pre GbelyNET tvorba skrebon pre scheduler na 30min
# lokalne skrebonkove premenne
:local traf
:local trafup
:local trafstat
:local trafupstat
:local traftemp
:local trafuptemp
:local traftemptt
:local trafuptemptt
:local downlimit
:local downlimitt
:local uplimit
:local uplimitt
:local prior
:local priorup
:local flow
:local flowup
:local mail
:local tempmail
# tu napis "yes" pokial chces aby bol email odoslany inak "no"
:local sendemail
:set sendemail "yes"
# zapise, ze sa pustil FUP
:log warning ("FUP spusteny!")
# tu nastavit pocet userov siete
:local sum
:set sum 101
# tu nastavit download a upload stiahnutych dat v bytoch kedy zacne obmedzovat prioritne traffic 268435456 134217728 "1,048,576 bit/s=1 Mibit/s (jeden mibibit za sekundu)"
:set downlimit 268435456
:set uplimit 134217728
# nastavene 1/2 z povodneho limitu v pripade resetu a ponechanie aspon casti priorit
:set downlimitt ($downlimit/2)
:set uplimitt ($uplimit/2)
/queue tree {
:for i from=1 to=$sum do={
# tu treba nastavit svoje triedy
:set traf [get [find name=("net-" . "$i" . "/p2p")] bytes]
:set prior [get [find name=("net-" . "$i" . "/p2p")] priority]
:set flow [get [find name=("net-" . "$i" . "/p2p")] packet-mark]
:set trafup [get [find name=("$i" . "-net/p2p")] bytes]
:set priorup [get [find name=("$i" . "-net/p2p")] priority]
:set flowup [get [find name=("$i" . "-net/p2p")] packet-mark]
:set traftemp ($traf/$downlimit)
:set trafuptemp ($trafup/$uplimit)
:set traftemptt ($traf/$downlimitt)
:set trafuptemptt ($trafup/$uplimitt)
# prepocet na MB
:set trafstat ($traf/1024/1024)
:set trafupstat ($trafup/1024/1024)
:if (($traftemp=1) && ($prior<7)) do={
:log warning ("Uzivatel " . "$flow" . " prekrocil limit 256MB pre download! Stiahol " . "$trafstat" . " MB. Priorita z " . "$prior" . " nastavena na 7 pre download.")
:set mail ("Uzivatel " . "$flow" . " prekrocil limit 256MB pre download! Stiahol " . "$trafstat" . " MB. Priorita z " . "$prior" . " nastavena na 7 pre download.")
:set tempmail ($tempmail . $mail . "
")
/queue tree set ("net-" . "$i" . "/p2p") priority=7 limit-at=16000
}
:if (($traftemp>1) && ($prior<8)) do={
:log warning ("Uzivatel " . "$flow" . " prekrocil limit 512MB pre download! Stiahol " . "$trafstat" . " MB. Priorita z " . "$prior" . " nastavena na 8 pre download.")
:set mail ("Uzivatel " . "$flow" . " prekrocil limit 512MB pre download! Stiahol " . "$trafstat" . " MB. Priorita z " . "$prior" . " nastavena na 8 pre download.")
:set tempmail ($tempmail . $mail . "
")
/queue tree set ("net-" . "$i" . "/p2p") priority=8 limit-at=16000
}
:if (($traftemptt=1) && ($prior=8) && ($traftemp<1)) do={
:log warning ("Uzivatel " . "$flow" . " prekrocil dlhodobejsi limit 256-512MB pre download! Stiahol " . "$trafstat" . " MB. Priorita z " . "$prior" . " nastavena na 8 pre download.")
:set mail ("Uzivatel " . "$flow" . " prekrocil dlhodobejsi limit 256-512MB pre download! Stiahol " . "$trafstat" . " MB. Priorita z " . "$prior" . " nastavena na 8 pre download.")
:set tempmail ($tempmail . $mail . "
")
/queue tree set ("net-" . "$i" . "/p2p") priority=8 limit-at=16000
}
:if (($trafuptemp=1) && ($priorup<7)) do={
:log warning ("Uzivatel " . "$flowup" . " prekrocil limit 128MB pre upload! Stiahol " . "$trafupstat" . " MB. Priorita z " . "$priorup" . " nastavena na 7 pre upload.")
:set mail ("Uzivatel " . "$flowup" . " prekrocil limit 128MB pre upload! Stiahol " . "$trafupstat" . " MB. Priorita z " . "$priorup" . " nastavena na 7 pre upload.")
:set tempmail ($tempmail . $mail . "
")
/queue tree set ("$i" . "-net/p2p") priority=7 limit-at=16000
}
:if (($trafuptemp>1) && ($priorup<8)) do={
:log warning ("Uzivatel " . "$flowup" . " prekrocil limit 256MB pre upload! Stiahol " . "$trafupstat" . " MB. Priorita z " . "$priorup" . " nastavena na 8 pre upload.")
:set mail ("Uzivatel " . "$flowup" . " prekrocil limit 256MB pre upload! Stiahol " . "$trafupstat" . " MB. Priorita z " . "$priorup" . " nastavena na 8 pre upload.")
:set tempmail ($tempmail . $mail . "
")
/queue tree set ("$i" . "-net/p2p") priority=8 limit-at=16000
}
:if (($trafuptemptt=1) && ($priorup=8) && ($trafuptemp<1)) do={
:log warning ("Uzivatel " . "$flowup" . " prekrocil dlhodobejsi limit 128-256MB pre upload! Stiahol " . "$trafupstat" . " MB. Priorita z " . "$priorup" . " nastavena na 8 pre upload.")
:set mail ("Uzivatel " . "$flowup" . " prekrocil dlhodobejsi limit 128-256MB pre upload! Stiahol " . "$trafupstat" . " MB. Priorita z " . "$priorup" . " nastavena na 8 pre upload.")
:set tempmail ($tempmail . $mail . "
")
/queue tree set ("$i" . "-net/p2p") priority=8 limit-at=16000
}
}
}
:if ($tempmail="") do={
:set sendemail "yes"
}
:if ($sendemail) do {
/tool e-mail send to="tvoj@tvoj.sk" subject=("Zoznam obmedzenych prioritou") \
body=("Datum : " . [/system clock get date] . "
Čas : " . [/system clock get time] . "
zaciatok dat --------------------
" . $tempmail . "
-------------------- koniec dat")
}
FUP reset
:local time
:local sumrq
:local trafrq
:local trafuprq
:local flowrq
:local flowuprq
:local priorrq
:local prioruprq
:local trafstatrq
:local trafupstatrq
# kontrola ci bezi router aspon jeden den 1d
/system resource {
:set time [get uptime]
:if ($time>0d) do={
# zapise, ze sa pustil FUP_reset
:log warning ("FUP reset spusteny!")
# tu nastavit pocet userov siete
:set sumrq 101
/queue tree{
:for j from=1 to=$sumrq do={
:set trafrq [get [find name=("net-" . "$j" . "/p2p")] bytes]
:set priorrq [get [find name=("net-" . "$j" . "/p2p")] priority]
:set flowrq [get [find name=("net-" . "$j" . "/p2p")] packet-mark]
:set trafuprq [get [find name=("$j" . "-net/p2p")] bytes]
:set prioruprq [get [find name=("$j" . "-net/p2p")] priority]
:set flowuprq [get [find name=("$j" . "-net/p2p")] packet-mark]
# prepocet na MB
:set trafstatrq ($trafrq/1024/1024)
:set trafupstatrq ($trafuprq/1024/1024)
# tu nastavit limit kedy bude obnovena priorita download
:if ($priorrq>6) do={
/queue tree set ("net-" . "$j" . "/p2p") limit-at=16000 queue=odkoho_smeruje_pcq priority=6
:log warning ("Uzivatel " . "$flowrq" . " ma nastavenu prioritu 6 pre download! Stiahol " . "$trafstatrq" . " MB.")
}
# tu nastavit limit kedy bude obnovena priorita upload
:if ($prioruprq>6) do={
/queue tree set ("$j" . "-net/p2p") limit-at=16000 queue=komu_smeruje_pcq priority=6
:log warning ("Uzivatel " . "$flowuprq" . " ma nastavenu prioritu 6 pre upload! Stiahol " . "$trafupstatrq" . " MB.")
}
}
}
:delay 60
/queue tree reset-counters-all
}
}
Funguje to asi takto vsetci zacinaju z prioritou 6 . Stiahne 256M -priorita 7 dosiahne 512M priorita 8.
Da sa tam dat aby to menilo aj Limit-at a aj max.
Takže nie som nejaky guru do scriptou ,ale niekedy aj pochopenie trva dlho
Na zaver ďakujem autorovi scriptu.
Caf