Где ошибка в расчётах - октеты в мегабиты?

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35456
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Где ошибка в расчётах - октеты в мегабиты?

Непрочитанное сообщение Alex Keda » 2016-04-05 0:00:19

такой вот скрипт:

Код: Выделить всё

first_gptel=`snmpget -v2c -c $comm 192.168.0.1 IF-MIB::ifHCInOctets.607 | awk '{print $4}'`
sleep 10
second_gptel=`snmpget -v2c -c $comm 192.168.0.1 IF-MIB::ifHCInOctets.607 | awk '{print $4}'`
#first_gptel=`snmpget -v2c -c $comm 192.168.0.1 IF-MIB::ifOutOctets.607 | awk '{print $4}'`
#sleep 10
#second_gptel=`snmpget -v2c -c $comm 192.168.0.1 IF-MIB::ifOutOctets.607 | awk '{print $4}'`

# считаем разницу, сколько октeтов (байт) прошло за 10 секунд
uplink_1=`let $second_gptel - $first_gptel`
# сколько байт прошло за секунду
u_bits=`let $uplink_1 / 10`
u_Mbits=`let $u_bits / 1048576`
цифры полчаются примерно в 10 раз меньше, чем реальные ... может в 8 ...
незнаю. но тупо поделить на 10 или 8 - не интересно. инетересно понять где я ошибся
Убей их всех! Бог потом рассортирует...

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
FreeBSP
майор
Сообщения: 2020
Зарегистрирован: 2009-05-24 20:20:19
Откуда: Москва

Где ошибка в расчётах - октеты в мегабиты?

Непрочитанное сообщение FreeBSP » 2016-04-05 0:25:52

ну ты ж сам пишешь сначала правильно
>> # сколько байт прошло за секунду
а переменную непавильно обзываешь
>> u_bits=`let $uplink_1 / 10`
реально бит в 8 раз больше прошло
Человек начинает получать первые наслаждения от знакомства с unix системами. Ему нужно помочь - дальше он сможет получать наслаждение самостоятельно ©
Ламер — не желающий самостоятельно разбираться. Не путать с новичком: ламер опасен и знает это!

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35456
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Где ошибка в расчётах - октеты в мегабиты?

Непрочитанное сообщение Alex Keda » 2016-04-05 1:22:02

ага... мегаБИТ жеж
значит надо полученное число на восемь помножить.
а лучше, наверное, снимать за восемь секунд, и делить сразу на 1024*1024 = 1048576

всем спасибо за внимание =)
Убей их всех! Бог потом рассортирует...

Аватара пользователя
Neus
капитан
Сообщения: 1980
Зарегистрирован: 2008-09-08 21:59:56

Где ошибка в расчётах - октеты в мегабиты?

Непрочитанное сообщение Neus » 2016-04-05 6:45:59

Alex Keda писал(а):ага... мегаБИТ жеж
значит надо полученное число на восемь помножить.
а лучше, наверное, снимать за восемь секунд, и делить сразу на 1024*1024 = 1048576

всем спасибо за внимание =)
не лучше, так семантика операции теряется.
потом будешь чесать репу "и чего я тут считаю..."

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35456
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Где ошибка в расчётах - октеты в мегабиты?

Непрочитанное сообщение Alex Keda » 2016-04-05 11:08:27

может кому понадобится - дёргает загрузку интерфейсов по убыванию.
вызываю из предыущего, по реультату его работы - большая или нет нагрузка на аплинке

Код: Выделить всё

manager# cat juniper.show.interfaces.traff.sh
#!/bin/sh

comm="private-or-public"
host=${1-"192.168.0.1"}
limit=150

# имя железки с которой работаем
sysName=`snmpwalk -v2c -c $comm $host SNMPv2-MIB::sysName.0 | awk '{print $4}'`

# директория временных файлов
tmp="`mktemp -d`"
# отправляемое/выводимое сообщение
msg="$tmp/msg.txt"

# перебираем мибы - вход/выход
#ifInOctets ifOutOctets
for way in In Out
do
        MIB="if${way}Octets"
        # снимаем 1 показание с интерфейсов
        snmpwalk -v2c -c $comm $host IF-MIB::$MIB | awk -F "$MIB." '{print $2}' | awk '{print $1" "$4}' |
        {
        while read index octets
        do
                # сохраняем значение траффика
                echo $octets > $tmp/1.$MIB.$index.txt
        done
        }
        # ждём 10 секунд
        sleep 10
        # снимаем 2 показание с интерфейсов
        snmpwalk -v2c -c $comm $host IF-MIB::$MIB | awk -F "$MIB." '{print $2}' | awk '{print $1" "$4}' |
        {
        while read index octets
        do
                # если трафф больше нуля - сохраняем его (чтоб не обсчитывать интерфейсы с нулями)
                if [ $octets -gt 0 ]
                then
                        # сохраняем значение траффика
                        echo $octets > $tmp/2.$MIB.$index.txt

                        # сразу считаем скорость, в отдельный файл
                        first_count=`cat $tmp/1.$MIB.$index.txt`
                        octets=`let $octets - $first_count`
                        # делим на число секунд, получаем Байт/с
                        Bps=`let $octets / 10`
                        # умножаем на 8 - получаем Бит/с
                        bps=`let $Bps \* 8`
                        # делим на 1024*1024 - МегаБиты
                        Mbits=`let $bps / 1048576`

                        # сохраняем в общий список скорость и имя интерфейса
                        if [ $Mbits != 0 ]
                        then
                                descr=`snmpget -v2c -c $comm $host IF-MIB::ifDescr.$index | awk -F 'STRING:' '{print $2}'`
                                echo $Mbits $descr >> $tmp/$MIB.txt
                        fi
                fi
        done
        }
        # формируем шапку сообщения
        echo "$sysName: top interfaces, $way" >> $msg
        # сортируем статистику, дописываем в файл
        cat $tmp/$MIB.txt | sort -n -r | head -10 | 
        {
        while read speed interface
        do
                echo "$interface        => $speed Mbit/s" >> $msg
        done
        }

        # пустая строка
        echo "" >> $msg
done

# выводим сообщение
cat $msg

rm -rf $tmp
пример выхлопа:

Код: Выделить всё

manager# sh juniper.show.interfaces.traff.sh 
ex2200-0.host-food.ru: top interfaces, In
ge-0/0/10       => 112 Mbit/s
ge-0/1/3        => 87 Mbit/s
ge-0/1/0        => 51 Mbit/s
ge-0/0/20       => 21 Mbit/s
ge-0/0/0        => 15 Mbit/s
ge-0/0/18       => 8 Mbit/s
ge-0/0/2        => 6 Mbit/s
ge-0/0/7        => 5 Mbit/s
ge-0/0/30       => 5 Mbit/s
ge-0/0/33       => 1 Mbit/s

ex2200-0.host-food.ru: top interfaces, Out
ge-0/1/0        => 294 Mbit/s
ge-0/1/3        => 12 Mbit/s
ge-0/0/18       => 10 Mbit/s
ge-0/0/30       => 5 Mbit/s
ge-0/0/20       => 2 Mbit/s
ge-0/0/7        => 1 Mbit/s
ge-0/0/21       => 1 Mbit/s
ge-0/0/10       => 1 Mbit/s

Убей их всех! Бог потом рассортирует...

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35456
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Где ошибка в расчётах - октеты в мегабиты?

Непрочитанное сообщение Alex Keda » 2016-04-06 14:35:48

заменил в скрипте

Код: Выделить всё

MIB="if${way}Octets"
на

Код: Выделить всё

MIB="ifHC${way}Octets"
поскольку первые 32 битные, и при большом потоке бывает обнулится успевают за 10 секунд.
вторые - соответственно 64 бита, с ними такой проблемы пока не наблюдал
Убей их всех! Бог потом рассортирует...

Аватара пользователя
Neus
капитан
Сообщения: 1980
Зарегистрирован: 2008-09-08 21:59:56

Где ошибка в расчётах - октеты в мегабиты?

Непрочитанное сообщение Neus » 2016-04-06 15:47:31

))
на канале 10гбит лет так через 435 обнулятся