4

SNMP をサポートしていないデバイスを監視したいので、expect スクリプトを介してカウンターを取得しようとしました。このスクリプトは、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: h.romanoc@pucp.edu.pe / aocampo@pucp.edu.pe"  
    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  
4

1 に答える 1

2

最終的に解決しました:)問題はパスファイルでした。

相対パスの代わりに:
ファイル "./GGSN-PDP-Contexts.log" を設定します。

私は絶対パスを入れました:
set file "/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 
于 2012-10-29T19:12:27.357 に答える