Ahoj. Mám script, kde dochází k nečekanému ukončení a já nevím proč.
Script porovná hodnoty a pak by měl nastavit Queue Tree na vypočítané hodnoty na procento. Script se načte ale skončí u řádku kde se defunuje max-limit="$qtsmax" a limit-at="$qtsmin".
Script funguje pouze v situaci, když ručně nebo scriptem nejprve vymažu z pravidel max-limit a limit-at. Funguje asi na 2-4 spuštění s různými hodnotami averageDOWN a pak se zase začne zasekávat na zmíněném místě. A musí se ručně vymazat.
Myslím si, že by to mělo fungovat i bez nutnosti vymazávání těch hodnot.
Udělal jsem dvě verze a stejný problém je u obou:
Verze 1:
:local maxlimitDOWN 5000;
:local averageDOWN 4500;
:local percentageDOWN 0;
:local levelDOWN;
:set percentageDOWN (($averageDOWN*100)/$maxlimitDOWN);
:set percentageDOWN (100-($percentageDOWN));
:set levelDOWN (($maxlimitDOWN/100)*$percentageDOWN);
:local qts do={
/queue tree {
:foreach item in=[find where name~($qtsname)] do={
set $item max-limit=($qtsmax*1000); # zde se script zasekne
set $item limit-at=($qtsmin*1000);
};
};
};
:log warning ("Values: " . (($levelDOWN/100)*95) . ", " . (($levelDOWN/100)*100));
:put [$qts qtsname=Rule305 qtsmin=(($levelDOWN/100)*95) qtsmax=(($levelDOWN/100)*100)];
Verze 2:
{:local maxlimitDOWN 5000;
:local averageDOWN 4000;
:local levelDOWN;
:set levelDOWN (($maxlimitDOWN-$averageDOWN)*10);
:local qts do={
:foreach item in=[/queue tree find name~($qtsname)] do={
/queue tree set "$item" max-limit="$qtsmax"; # zde se script zasekne
/queue tree set "$item" limit-at="$qtsmin";
};
};
:put [$qts qtsname=Rule305 qtsmin=($levelDOWN*95) qtsmax=($levelDOWN*100)];
}Verze ROS 6.32 a zkoušel jsem to i včetně nejnovější 6.42 a to problém neřeší.
V čem je problém? nebo jak mohu udělat script tak, aby fungoval? Díky