:global up – переменная, в которую будет записываться исходящий трафик.
:global down – переменная, в которую будет заносится входящий трафик.
:global total – сумма двух переменных, общий трафик.
:global traff – будет заноситься значение шейпера.

Рис.1. Создаем глобальные переменные.

Рис.2. Извлекаем данные о трафике.
Извлекаем данные из шейпера queue1 в переменную traff:
:set traff [/queue simple get "queue1" byte];
Выводим значение переменной traff:
:put $traff;
213479463/8458675477
Мы видим количество трафика. До слеша - это исходящий трафик, после - входящий. Но для того, чтобы можно было производить какие-то действия над этими значениями, необходимо избавится от слеша.
Заносим значение исходящего трафика в переменную up:
set up [:pick $traff 0 ([:find $traff "/"]-1)];
Заносим значение входящего трафика в переменную down:
:set down [:pick $traff ([:find $traff "/"]+1) [:len $traff]];
И выводим на экран.

Рис.3. Заносим значения в переменные.
Рис.4. Переводим байты в мегабайты, для исходящего трафика.
Создаем глобальную переменную для исходящего трафика в мегабайтах:
:global upm;
Переводим исходящий трафик из байтов в мегабайты:
:set upm ($up / 1048576);
Выводим значение на экран:
:put $upm;
Рис.5. Входящий трафик в мегабайтах:
Создаем глобальную переменную для входящего трафика в мегабайтах:
:global downm;
Переводим входящий трафик из байтов в мегабайты:
:set downm ($down / 1048576);
Выводим значение на экран:
:put $downm;
Для того, чтобы получить значение общего трафика, необходимо просто сложить две переменные:
:set total ($upm + $downm);
:put $total;

Рис.6. Общий трафик в мегабайтах.
Теперь мы знаем, как извлечь количество трафика из правила шейпера.
Евгений Рудченко специально для asp24


