IfIndex计算华为

问题描述 投票:0回答:3

我正在尝试通过Python通过SNMP连接到华为设备(MA5608T)。我了解到索引值和端口之间存在对应关系。

但是还是不明白怎么翻译

例如: 4194445056.0(索引)= 0/17/7(端口)

有人知道要做什么吗?

snmp calculation
3个回答
3
投票

试试这个方法:

4194304000 + (slot * (256 * 32)) + pon * 256) + '.' + onu_id


0
投票

此 Javascript 代码取自生产环境。二进制运算将为您提供有关如何从数据包中提取数据的线索。

function convert_snmp_packet( packet ){
    
    let regex = /[^\.]*/g;
    let found = packet.match( regex );

    if( found.length < 2 ) {
        throw new Error( "wrong packet ? " + packet );
    }

    let left_part = parseInt( found[0] );
    // found[1] is just the dot
    let ont_index = parseInt( found[ 2 ] );
    let slot_num;
    let port_num;


    slot_num = ( left_part & ( 15 << 13 ) ) >> 13;
    port_num = ( left_part & ( 15 << 8 ) ) >> 8;

    let json = {
        slot_num: slot_num, 
        port_num: port_num, 
        ont_index: ont_index
    };
    return json;
}

测试代码:

class packet_Test extends Test {
    test_packet(  ){
        // packet must be a String for this to work
        let p =  "4194445056.0";
        let actual = convert_snmp_packet( p );
        let expected = { slot_num: 1, port_num: 7, ont_index: 0 };
        this.assertEquals( expected, actual );
        this.done()
    }
}    

抱歉,死灵术。在通过华为olt查找有关SNMP的信息时遇到了这个问题。


0
投票
eth_oid="1.3.6.1.4.1.2011.6.128.1.1.2.62.1.22"
    gpon_oid="1.3.6.1.4.1.2011.6.128.1.1.2.62.1.21"
    rx_oid="1.3.6.1.4.1.2011.6.128.1.1.2.51.1.4"
    tx_oid="1.3.6.1.4.1.2011.6.128.1.1.2.51.1.6"
    num_max_oid="1.3.6.1.4.1.2011.6.128.1.1.2.46.1.21"
    
    # Простой расчет syff_oid
    let "syff_oid = 8192 * $SlotID + 256 * $PortID + 304000"

    # Выполнение SNMP запросов
    eth_link=$(snmpwalk -v 2c -c "${SNMP_COMMUNITY}" "$IP" "${eth_oid}.4194$syff_oid.$ONUNum.1" | awk '{print $4}')
    gpon_link=$(snmpwalk -v 2c -c "${SNMP_COMMUNITY}" "$IP" "${gpon_oid}.4194$syff_oid.$ONUNum.1" | awk '{print $4}')
    rx_optic=$(snmpwalk -v 2c -c "${SNMP_COMMUNITY}" "$IP" "${rx_oid}.4194$syff_oid.$ONUNum" | awk '{print $4}')
    tx_optic=$(snmpwalk -v 2c -c "${SNMP_COMMUNITY}" "$IP" "${tx_oid}.4194$syff_oid.$ONUNum" | awk '{print $4}')
    num_max=$(snmpwalk -v 2c -c "${SNMP_COMMUNITY}" "$IP" "${num_max_oid}.4194$syff_oid.$ONUNum" | awk '{print $4}')
© www.soinside.com 2019 - 2024. All rights reserved.