Ожидайте сценарий для имитации SNMP

Я хочу контролировать устройство, которое не поддерживает SNMP, поэтому я попытался получить счетчик с помощью сценария ожидания. Этот сценарий подключается к устройству с помощью SSH, записывает выходные данные в файл, а затем анализирует выходные данные, чтобы получить желаемый счетчик.

Когда я запускаю скрипт из консоли, я получаю следующий желаемый результат:

root@box:/path# ./GGSN-PDP-Contexts.expect  
.1.3.6.1.4.1.6147.2.1  
Integer32  
310838  

Однако, когда я пытаюсь получить результат с помощью snmpget, он не работает!

root@box:/path# snmpget -m TDP-MIB  -v 2c -c TM_Com_Pub localhost .1.3.6.1.4.1.6147.2.1  
TDP-MIB::PDPContextsNumber = No Such Instance currently exists at this OID  

Кстати, это актуальная конфигурация в snmpd.conf:
pass .1.3.6.1.4.1.6147.2.1 /usr/bin/expect /path/GGSN-PDP-Contexts.expect

И это сценарий ожидания, который я использую:

#!/usr/bin/expect -f  

# Constants  
set user "user"  
set device "10.10.222.176"  
set pass "blablabla"  
set timeout -1  
set prompt "GGSN-LV02#"  
set file "./GGSN-PDP-Contexts.log"  

# Options  
match_max 100000  
log_user 0  

# Access to device  
spawn ssh -oStrictHostKeyChecking=no -oCheckHostIP=no $user@$device  
expect "*?assword:*"  
send -- "$pass\r"  

# Commands execution  
expect -exact "$prompt"  
send -- "display pdp-number\r"  
log_file -a $file

# Logging  
expect -exact "$prompt"  
log_file  
send -- "quit\r"  

# Get the value  
set result [exec cat $file | grep "ALL GTP" | cut -d " " -f14]  
set value [format %d $result]  

# Print the value  
puts ".1.3.6.1.4.1.6147.2.1"  
puts "Integer32"  
puts $value  # If I replace the $value with a number, it doesn't work either  

# Erase log file  
exec rm $file  
close  

Не могли бы вы дать мне какую-нибудь подсказку? Заранее спасибо!

РЕДАКТИРОВАТЬ:

Кроме того, это последние строки отладочного вывода snmpget:

trace: snmp_comstr_parse(): snmp_auth.c, 135:  
dumph_recv:   SNMP version  
dumpx_recv:    02 01 01 
dumpv_recv:      Integer:       1 (0x01)  
trace: snmp_comstr_parse(): snmp_auth.c, 147:  
dumph_recv:   community string  
dumpx_recv:    04 0A 54 4D 5F 43 6F 6D 5F 50 75 62   
dumpv_recv:      String:        TM_Com_Pub  
trace: _snmp_parse(): snmp_api.c, 4149:  
dumph_recv:   PDU  
trace: snmp_pdu_parse(): snmp_api.c, 4255:  
dumpv_recv:     Command RESPONSE  
trace: snmp_pdu_parse(): snmp_api.c, 4336:  
dumph_recv:     request_id  
dumpx_recv:      02 04 3B 9E CF 74   
dumpv_recv:        Integer:     1000263540 (0x3B9ECF74)  
trace: snmp_pdu_parse(): snmp_api.c, 4347:  
dumph_recv:     error status  
dumpx_recv:      02 01 00   
dumpv_recv:        Integer:     0 (0x00)  
trace: snmp_pdu_parse(): snmp_api.c, 4358:  
dumph_recv:     error index  
dumpx_recv:      02 01 00   
dumpv_recv:        Integer:     0 (0x00)  
trace: snmp_pdu_parse(): snmp_api.c, 4376:  
dumph_recv:     VarBindList  
trace: snmp_pdu_parse(): snmp_api.c, 4406:  
dumph_recv:       VarBind  
trace: snmp_parse_var_op(): snmp.c, 166:  
dumph_recv:         Name  
dumpx_recv:          06 09 2B 06 01 04 01 B0 03 02 01   
dumpv_recv:            ObjID: TDP-MIB::PDPContextsNumber  
trace: snmp_pdu_parse(): snmp_api.c, 4415:  
dumph_recv:         Value  
TDP-MIB::PDPContextsNumber = No Such Instance currently exists at this OID  

Кроме того, это мой текущий MIB:

TDP-MIB DEFINITIONS ::= BEGIN  

IMPORTS  
    MODULE-IDENTITY, OBJECT-TYPE, Integer32, enterprises  
                    FROM SNMPv2-SMI  
    OBJECT-GROUP    FROM SNMPv2-CONF;   

TDP MODULE-IDENTITY  
    LAST-UPDATED "201210080000Z" -- 8/oct/2012  
    ORGANIZATION    "TELEFONICA"  
    CONTACT-INFO    "Authors: Hernan Romano / Antonio Ocampo  
                     Email: [email protected] / [email protected]"  
    DESCRIPTION     "MIB para gestionar los equipos que carecen de SNMP"  
    REVISION        "201210080000Z" -- 08/oct/2012  
    DESCRIPTION     "Revision 2.1"  
    ::= { enterprises 6147 }    

Nokia                   OBJECT IDENTIFIER ::= { TDP 1 }  
Huawei                  OBJECT IDENTIFIER ::= { TDP 2 }  
TDPMIBConformance       OBJECT IDENTIFIER ::= { TDP 3 }  

ClearCodeGroup1         OBJECT-TYPE  
                        SYNTAX Integer32  
                        MAX-ACCESS read-only  
                        STATUS current  
                        DESCRIPTION "Clear Code Group 1"  
                        ::= { Nokia 1 }  

PDPContextsNumber       OBJECT-TYPE  
                        SYNTAX Integer32  
                        MAX-ACCESS read-only  
                        STATUS current  
                        DESCRIPTION "PDP Contexts Number"  
                        ::= { Huawei 1 }  

TDPMIBGroup             OBJECT IDENTIFIER  
                        ::= { TDPMIBConformance 1 }  

--grupoTDP      OBJECT-GROUP  
--      OBJECTS {  
--              ClearCodeGroup1,  
--              PDPContextsNumber  
--      }  
--      STATUS current  
--      DESCRIPTION "Objetos para el monitoreo de los equipos que carecen de SNMP"  
--      ::= { TDPMIBGroup 1 }  
END  

person Antonio Ocampo    schedule 15.10.2012    source источник
comment
Вы можете попробовать использовать snmpwalk для диагностики вещей.   -  person ed.    schedule 16.10.2012
comment
Спасибо за ваш ответ @ed. Я сделал snmpwalk и получил следующий результат: root@box:/path# snmpwalk -m TDP-MIB -v 2c -c TM_Com_Pub localhost .1.3.6.1.4.1.6147 TDP-MIB::ClearCodeGroup1 = INTEGER: 83 TDP -MIB::ClearCodeGroup1 = INTEGER: 83 Ошибка: OID не увеличивается: TDP-MIB::ClearCodeGroup1 ›= TDP-MIB::ClearCodeGroup1.   -  person Antonio Ocampo    schedule 16.10.2012
comment
Попробуйте добавить -Cc в smnpwalk и запустить его снова - он говорит, что OID могут быть не в порядке.   -  person ed.    schedule 16.10.2012
comment
@ed Я получил только этот вывод: TDP-MIB::ClearCodeGroup1 = INTEGER: 83 TDP-MIB::ClearCodeGroup1 = INTEGER: 83 TDP-MIB::ClearCodeGroup1 = INTEGER: 83 ....   -  person Antonio Ocampo    schedule 16.10.2012
comment
Хм. Я надеялся, что он расскажет вам немного больше о PDPContextsNumber. Я не уверен, что предложить после этого ... может быть, у кого-то еще будет идея. Было бы полезно указать, как вы собираетесь выполнять свой сценарий в результате вызова SNMP.   -  person ed.    schedule 17.10.2012
comment
Спасибо за ваше время @ed !! У кого-нибудь есть еще идеи?   -  person Antonio Ocampo    schedule 22.10.2012


Ответы (1)


Наконец-то решил :) Беда была в файле пути.

Вместо относительного пути:
укажите файл "./GGSN-PDP-Contexts.log"

Я указал абсолютный путь:
установить файл "/FULL_PATH/GGSN-PDP-Contexts.log"

и snmpget работает!!

root@box:/path# snmpget -m TDP-MIB  -v 2c -c TM_Com_Pub localhost .1.3.6.1.4.1.6147.2.1  
TDP-MIB::PDPContextsNumber = INTEGER: 319291 
person Antonio Ocampo    schedule 29.10.2012