forum.bitel.ru
http://forum.bitel.ru/

Логика работы passtest.sh
http://forum.bitel.ru/viewtopic.php?f=5&t=1761
Страница 1 из 1

Автор:  snark [ 25 дек 2008, 19:10 ]
Заголовок сообщения:  Логика работы passtest.sh

Уважаемые разработчики, объясните пожалуйста логику работы passtest.sh. См. комментарии прямо в коде скрипта:
Код:
#!/bin/sh

killscript=/usr/local/libexec/mpd/closebund.sh
date=/bin/date
ls=/bin/ls
cut=/usr/bin/cut

logfile=/var/log/snmpget.log
rundir=/var/run/mpd
login=''
tmpdir=/tmp

echo "$($date) $*" >> $logfile

if [ "$1" = "-s" ]; then

    # если получен запрос вида:
    #  param 1: -s
    #  param 2: .1.3.6.1.4.1.2021.255.1
    #  param 3: integer
    #  param 4: 2
    # то тогда проверяем 4-й параметр:

    if [ -z "$4" ] ; then
        # если 4-й параметр - пустая строка, то выходим
        exit
    fi

    # если 4-й параметр - не пустая строка, то запускаем скрипт сброса и выходим
    $killscript $4
    exit
else
    # если получен запрос вида:
    #  param 1: -g
    #  param 2: .1.3.6.1.4.1.2021.255.1
    # то начинаем формировать ответ:

    # вписываем во 2-й параметр полученный OID
    echo "$2"

    # вписываем параметр string
    echo "string"

    for i in $($ls -1 $rundir/); do
        if [ "x$i" = "xng${2##*.}" ] ; then
            login=$($cut -f 1 -d ' ' < $rundir/$i)
            break
        fi
    done

    # вписываем либо "-" либо логин
    if [ -z "$login" ]; then
        echo "-"
    else
        echo $login
    fi
fi

При запросе OID-а .1.3.6.1.4.1.2021.255.1 БГБ сбрасывает соединение - это понятно, но для чего формируется строка вида:
Код:
.1.3.6.1.4.1.2021.255.1 string логин_юзера

Правильно ли я понимаю что это для проверки существования подключения пользователя?
Для чего используется запрос вида:
Код:
param 1: -g
param 2: .1.3.6.1.4.1.2021.255.2

немного не понятно :(

Автор:  snark [ 26 дек 2008, 16:24 ]
Заголовок сообщения: 

bump!

Автор:  snark [ 29 дек 2008, 13:20 ]
Заголовок сообщения: 

неужели никто не знает как работает bitel.billing.server.processor.SNMPNASConnectionInspectorType5 ?
объясню зачем это нужно - сейчас я пишу скрипт сброса под mpd5 и мне очень нужно знать что и когда шлет биллинг и какие данные он ожидает получить! то что сбрасывает по
Код:
.1.3.6.1.4.1.2021.255.1 i номер_порта

это понятно, но как он проверяет? пока что у меня создатся впечатление что тупым перебором ответов, т.к. я еще ни разу не видел запроса
Код:
.1.3.6.1.4.1.2021.255 i номер_порта

или
Код:
.1.3.6.1.4.1.2021.255 s имя_юзера

или еще какого иного запроса кроме описанных выше ...
уважаемые разработчики, разъясните, пожалуйста!

Автор:  skn [ 29 дек 2008, 16:38 ]
Заголовок сообщения: 

Код:
        if ( login != null )
        {
            // Для Cisco 5350 при проверки передается код сессии,
            // возращает 2 если данный логин на линии
            if ( "2".equals( login ) )
                responseOK = true;
            // для остальных посылаем номер порта или процесса,
            // возращает ЛОГИН
            else if ( login.equals( loginName ) )
                responseOK = true;
        }

Автор:  snark [ 29 дек 2008, 17:30 ]
Заголовок сообщения: 

skn писал(а):
Код:
// для остальных посылаем номер порта или процесса

т.е. я правильно понимаю что Вы посылая:
Код:
.1.3.6.1.4.1.2021.255.2

шлете:
Цитата:
.1.3.6.1.4.1.2021.255.номер_порта

или не правильно?
skn писал(а):
Код:
// возращает ЛОГИН

это я из кода скрипта уже понял, я просто не понял где именно шлется проверка :(

P.S. вопрос в догонку - используется где либо
Цитата:
.1.3.6.1.4.1.2021.255.0

или нет? а то я туда хотел мониторинг кол-ва подключенных юзеров прикрутить ...

Автор:  skn [ 29 дек 2008, 17:34 ]
Заголовок сообщения: 

Код:
@Override
    protected void sendCheckRequest( NASConnection connection )
    {
        DialUpSessionRealtime session = (DialUpSessionRealtime)connection.getSession();

        int ver = context.getVersion();
        try
        {
            OneGetPdu getPdu = new OneGetPdu( context );
            getPdu.addOid( snmp_oid_check + "." + session.getNasPort() );
            getPdu.addObserver( new SNMPNASConnectionObserver( ver, connection, this ) );
            getPdu.send();

            session.addLogDebug( "SNMP check request: " + snmp_oid_check + "." + session.getNasPort() );
        }
        catch( Exception ex )
        {
            session.addLogError( "SNMP check request  [ SNMP ver. " + ver + ", host=" + getHost() + ", msg="
                                 + ex.getMessage() + " ]" );
        }
    }

    @Override
    public void sendKillRequest( NASConnection connection )
    {
        DialUpSessionRealtime session = (DialUpSessionRealtime)connection.getSession();

        try
        {
            OneSetPdu setPdu = new OneSetPdu( context );
            setPdu.addOid( snmp_oid_kill, new AsnInteger( CommonUtils.parseIntString( session.getNasPort(), -1 ) ) );
            setPdu.send();

            session.addLogInfo( "SNMP reset request: set " + snmp_oid_kill + " i " + session.getNasPort() );
        }
        catch( Exception ex )
        {
            session.addLogError( "SNMP reset request [ SNMP ver." + context.getVersion() + ", host=" + getHost()
                                 + ", msg=" + ex.getMessage() + " ]" );
        }
    }

Автор:  skn [ 29 дек 2008, 17:37 ]
Заголовок сообщения: 

Цитата:
P.S. вопрос в догонку - используется где либо
.1.3.6.1.4.1.2021.255.0
или нет? а то я туда хотел мониторинг кол-ва подключенных юзеров прикрутить ...


если у девайса нет нулевого процесса или порта - то не используется

Автор:  snark [ 29 дек 2008, 18:32 ]
Заголовок сообщения: 

спасибо! теперь абсолютно все встало на свои места :)

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/