Jump to content

pashaumka

Сitizens
  • Content Count

    428
  • Joined

  • Last visited

  • Days Won

    2

Posts posted by pashaumka

  1. так покрасивее )))

     

                // выборочно но забрать инфу об онухах
                function sel_get_nmsEponLlidOnuBindEntry($parent_ifIndex="", $mac_addr="", $function_list=array() ) {
                    $strings = \common\strings::getInstance();
                    $snmp_mac = "";
    
                    if($mac_addr)  $snmp_mac = $strings->format_mac(bin2hex($mac_addr),"snmp");
    
                    if( is_array($function_list) && count($function_list) ) {
    
                    } else {
                        $function_list=array("1","2","3","4","5","6","7","8","9","10","11");
                    }
                    if( false === ( $result=self::SnmpSelectiveQueryAll(".1.3.6.1.4.1.3320.101.11.1.1", $function_list, $parent_ifIndex, $snmp_mac ) ) ) return false;
                    return( self::parse_nmsEponLlidOnuBindEntry( $result, $parent_ifIndex, $mac_addr ) );
                }
    
                function get_nmsEponLlidOnuBindEntry() {
                    if( false === ( $result = self::snmpQueryAll(".1.3.6.1.4.1.3320.101.11.1.1","") ) ) { return false; }
                    return( self::parse_nmsEponLlidOnuBindEntry( $result ) );
                }
    
    
    	protected static function parse_nmsEponLlidOnuBindEntry( $result, $__parent_ifIndex="", $__mac_addr="" ) {
                    $strings = \common\strings::getInstance();
                    $nest_array=array();
                    foreach($result as $res_oid => $value) {
                        $key = self::subtok($res_oid,".", -8);
                        $index = explode('.', $key);
                        $func               = $index[0];
                        $parent_ifIndex     = $index[1];
                        $mac_addr           = sprintf("%02x:%02x:%02x:%02x:%02x:%02x", $index[2],$index[3],$index[4],$index[5],$index[6],$index[7]);
                        switch($func) {
                            case "1": $func="llidEponIfDiid"; break;
                            case "2": $func="llidSequenceNo"; break;
                            case "3": $func="onuMacAddressIndex"; $value = $strings->format_mac(bin2hex($value),"linux"); break;
                            case "4": $func="llidOnuBindDesc"; break;
                            case "5": $func="llidOnuBindType"; break;  // static(0), dynamic(1)
                            case "6": $func="llidOnuBindStatus"; break; // authenticated(0), registered(1), deregistered(2), discovered(3), lost(4), auto-configured(5), unknow
                            case "7": $func="llidOnuBindDistance"; break;
                            case "8": $func="llidOnuBindRTT"; break;
                            case "9": $func="LastRegTime"; $value = self::get_LastXregReason($value);  break;
                            case "10": $func="LastDeregTime"; $value = self::get_LastXregReason($value);  break;
                            case "11": $func="LastDeregReason";  break;  // 8 power-off 9 wire-down
                            default:  break;
                        }
                        $nest_array[$parent_ifIndex][$mac_addr][$func]=$value;
                    }
                    if($__parent_ifIndex!="") {
                        if($__mac_addr!="") {
                            if(isset($nest_array[$__parent_ifIndex][$__mac_addr]) )
                                return $nest_array[$__parent_ifIndex][$__mac_addr];
                            return false;
                        }
                        return $nest_array[$__parent_ifIndex];
                    }
                    return($nest_array);
                }
    
            static function get_LastXregReason($value) {
                $data = unpack( 'nYear/CMonth/CDay/CHour/CMin/CSec/Cp1/Cp2/Cp3/Cp4', $value );
                $result = sprintf("%04d-%02d-%02d %02d:%02d:%02d",$data["Year"],$data["Month"],$data["Day"],$data["Hour"],$data["Min"],$data["Sec"]);
                return($result);
            }

     

  2. В 26.09.2019 в 19:27, camchatix сказал:

    Большое спасибо что помогли и за ваше терпение ВСЕМ!

     

    база создавалась с кодировкой УТФ8. Таблицы тоже проверил - все УТФ8

    скачал файл с сайта, на сервере unzip ponmon.zip. Потом mysql -uroot -p -D pon <pon.sql

    файл дампа заливался в базу с кряками.

    поставил phpmyadmin -  в таблице кряки. удалил таблицы, импорт файла в браузере через phpmyadmin - и все ок. таблица pm_texts в порядке

     

    Спасибо что помогли! 

     

    пс. Готовы донатить если будет версия для ZTE C300

     

    а по вашей голове оригинальная дорументация присутствует?

  3. 1 час назад, Baneff сказал:

    Вот, кстати. Разместил я свой веб сервер на площадке хостера, хостер выдал два адреса: ipv4 и ipv6. Оба эти адреса я прописал в DNS. Как клиент будет выбирать на какой из этих двух адресов ему стучаться? На оба по очереди по какому-то алгоритму или будет тупо стучать до посинения в первый попавшийся? 

     

    предпочтение со стороны клиента.

    если ДНС ответит 2-мя адресами - то по предпочтению

  4. enp10s14: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.0.10  netmask 255.255.255.0  broadcast 192.168.0.255
            inet6 2001:67c:21f0:b800:210:ddff:fe23:eeee  prefixlen 64  scopeid 0x0<global>
            inet6 fe80::210:ddff:fe23:eeee  prefixlen 64  scopeid 0x20<link>
            ether 00:10:dd:23:ee:ee  txqueuelen 1000  (Ethernet)

    2 адреса: 192.168.  и  2001::

  5. 6 часов назад, Baneff сказал:

    Кстати, понятно теперь, почему тут молчанка по этому вопросу. То неслабые баталии разворачиваются по мелким вопросам, а тут почти полная тишина, кроме @vop никто не отвечает. Думаю все, кто в теме, как-то уже затарились всеми правдами и неправдами PI блоками и теперь молчат в тряпочку, ну на  всякий случай :)

     

    обратитесь в нетассист! 

  6. В 13.10.2019 в 11:38, Baneff сказал:

    А в чём проблема с IPoE на FreeBSD? Accel-а нету, да. Был бы - было бы проще. Но менять ради этого ось на системе, которая более двадцати лет работает как-то лень. Какая ось лучше - спорить не будем, есть то что есть. Телефон поддержки тоже беспокоит крайне редко. Но это всё касаемо ipv4. А вот какие грабли вылезут при внедрении ipv6 пока непонятно. Но будем пробовать потихоньку.

    так просто расскажите, на чем это реализовать..  Тазик свободные есть - попробую

  7. Только что, Baneff сказал:

    А как насчёт FreeBSD + IPoE + DHCP ?

    а каким феншуем поднимается IPoE на рогатых? я от рогатых, как от брасов, ушел в 15 году.....поставил пингвинов и после 6-ти вечера телефон техподдержки замолчал

    • Like 2
    • Haha 1
  8. lunux / accel - pppoe, ipoe - все готово "из коробки"  ( dhcp )

    freebsd / mpd5 - pppoe - через костыли. Скрипт + quagga ( router advertisement ). мой   Пост от 2013 года

    dhcpv6 - для серверов - да. Для юзеров -  ээээ - надо ли ? Но это мое мнение..

     

     

     

    • Like 1
  9. Райп уже даже лирам перестал выдавать /22 - уже только /24. 

    и очень поприветствовал запускать ipv6, чего и вам рекомендую.

     

    17 часов назад, Den_LocalNet сказал:

    А ещё попутно заменить несколько миллионов домашних роутеров. И десяток тысяч железок у провайдеров. 

    "Москва не сразу строилась"

    Вы начните, Проведите акции - включи IPv6.

     

  10. В 25.09.2019 в 10:34, DenimMark сказал:

    Всем хорошего дня.

     

    Какую карту взять, посоветуйте.

     

    Выбираю из того что здесь предлагают

     

    - Silicom PE210G2SPI9(OEM-версия Intel X520-DA2)

    - Intel X520-DA2 (82599)

    - SuperMicro AOC-STGN-I2S Dual-port 10 Gigabit  REV: 1.01 (82599)
    - SuperMicro AOC-STGN-I2S Dual-port 10 Gigabit REV: 2.00 (82599)
    - SuperMicro AOC-CTG-I2S Dual-port 10 Gigabit Ethernet Adapter REV: 1.00 (82599)

     

     

    PCIe3  и побольше ядер в процаХ

    • Like 1
  11. 13 часов назад, a_n_h сказал:

    "офтопну" - ну почему под ZTE 220 никто ничего не предлагает?!

    именно под него ЕСТЬ мануал с описанием и оидами?

    под 320й я нашел, как зарегать онуху...  но прописывание сервис портов и прочее - нифига нет или я snmpwalk ом - не добрался до той ветки ( нарвавшись на зацикленность оида )

  12. В 29.08.2019 в 13:35, VitalyMoiseev сказал:

    есть такая проблема - номер СФП одной цифрой выбирается. Надо немного переделать логику скрипта опроса. Постараюсь до завтра сделать новую версию без этой проблемы.

            // получить индексы ePON портов
            public static function get_epon_tree_info() {
                //http://www.circitor.fr/Mibs/Html/N/NMS-EPON-OLT-PON.php#NMSEponOltPonEntry
                $ponIfIndex = ".1.3.6.1.4.1.3320.101.6.1.1";
                if( false === ( $snmp_reply = self::snmpQueryAll($ponIfIndex) ) ) { return false; }
                $re_arr=array();
                foreach($snmp_reply as $snmp_key => $value ) {
                    $function = self::subtok($snmp_key,".",-2,1);
                    $ifIndex = self::subtok($snmp_key,".",-1);
                    switch($function) {
                        case "1":  $function = "ponIfIndex"; break;
                        case "2":  $function = "llidSequenceNo"; break; // последовательность зареганых ОНУ
                        case "3":  $function = "onuAuthMethod"; break;   // none(0), manual(1), mac(3), loid(4), hybrid(6)
                        case "4":  $function = "isCheckOnuMac"; break;  //yes(1), no(2)
                        case "5":  $function = "isPONBelongtoPSG"; break; //alone-pon(0), b-psg(1), active-pon(2), standby-pon(3), c-psg(4)
                        case "6":  $function = "pONBelongtoPSGID"; break; //
                        case "7":  $function = "isUsingMpcpRegisteAckDelayTime"; break;  //yes(1), no(2)
                        case "8":  $function = "mpcpRegisteAckDelayTime"; break;  //1..50
                        case "9":  $function = "ponIfAdminStatus"; break;  //up(1), down(2)
                        case "10":  $function = "ponIfInFecStatus"; break; //on(1), off(2)
                        case "11":  $function = "ponIfOutFecStatus"; break;  //on(1), off(2)
                        case "12":  $function = "ponIfLaserStatus"; break;  //on(1), off(2)
                        case "13":  $function = "isOnuDataSwitch"; break;   //on(1), off(2)
                        case "14":  $function = "ponIfProtectedStatus"; break; //on(1), off(2)
                        case "15":  $function = "ponIfDynamicMacLearningStatus"; break; // on(1), off(2)
                        case "16":  $function = "ponIfMacACL"; break;
                        case "17":  $function = "ponIfIpACL"; break;
                        case "18":  $function = "fiberProtectHandInHand"; break;
                        case "19":  $function = "fiberProtectGroup"; break;
                        case "20":  $function = "splittingRatio"; break;            // Макс деление на дереве
                        case "21":  $function = "activeOnuNum"; break;              // кативных ону
                        case "22":  $function = "inactiveOnuNum"; break;            // неактивных ону
                        case "23":  $function = "llidIfindexString"; break;
                        default :  break;
                    }
                    $re_arr[$ifIndex][$function]=$value;
                }
                return($re_arr);
            }
    
            public static function get_epon_optics_alarm_info() {
                //http://www.circitor.fr/Mibs/Html/N/NMS-EPON-OLT-PON.php#NMSEponOltPonEntry
                $ponIfIndex = ".1.3.6.1.4.1.3320.101.6.2.1";
                if( false === ( $snmp_reply = self::snmpQueryAll($ponIfIndex) ) ) { return false; }
                $re_arr=array();
                foreach($snmp_reply as $snmp_key => $value ) {
                    $function = self::subtok($snmp_key,".",-2,1);
                    $ifIndex = self::subtok($snmp_key,".",-1);
                    switch($function) {
                        case "1":   $function = "ifIndex"; break;
                        case "2":   $function = "txPowerAlarmUpLimitEnable"; break;
                        case "3":   $function = "txPowerAlarmUpLimitThreshold"; break;
                        case "4":   $function = "txPowerAlarmUpLimitClearThreshold"; break;
                        case "5":   $function = "txPowerAlarmLowLimitEnable"; break;
                        case "6":   $function = "txPowerAlarmLowLimitThreshold"; break;
                        case "7":   $function = "txPowerAlarmLowLimitClearThreshold"; break;
                        case "8":   $function = "temperatureAlarmUpLimitEnable"; break;
                        case "9":   $function = "temperatureAlarmUpLimitThreshold"; break;
                        case "10":  $function = "temperatureAlarmUpLimitClearThreshold"; break;
                        case "11":  $function = "temperatureAlarmLowLimitEnable"; break;
                        case "12":  $function = "temperatureAlarmLowLimitThreshold"; break;
                        case "13":  $function = "temperatureAlarmLowLimitClearThreshold"; break;
                        case "14":  $function = "voltageAlarmUpLimitEnable"; break;
                        case "15":  $function = "voltageAlarmUpLimitThreshold"; break;
                        case "16":  $function = "voltageAlarmUpLimitClearThreshold"; break;
                        case "17":  $function = "voltageAlarmLowLimitEnable"; break;
                        case "18":  $function = "voltageAlarmLowLimitThreshold"; break;
                        case "19":  $function = "voltageAlarmLowLimitClearThreshold"; break;
                        case "20":  $function = "currentAlarmUpLimitEnable"; break;
                        case "21":  $function = "currentAlarmUpLimitThreshold"; break;
                        case "22":  $function = "currentAlarmUpLimitClearThreshold"; break;
                        case "23":  $function = "currentAlarmLowLimitEnable"; break;
                        case "24":  $function = "currentAlarmLowLimitThreshold"; break;
                        case "25":  $function = "currentAlarmLowLimitClearThreshold"; break;
                        default :  break;
    
                    }
                    $re_arr[$ifIndex][$function]=$value;
                }
                return($re_arr);
            }
    
            protected static function subtok($string, $chr, $pos, $len = NULL) {
                return implode($chr,array_slice(explode($chr,$string), $pos, $len));
            }
    
            protected static function subtok2($string, $chr, $pos, $len = NULL) {
                    $str="";
                    foreach( array_slice(explode($chr,$string), $pos, $len) as $char)
                        $str .= chr($char);
                    return $str;
            }

    в помощь

     

    1567237864433.thumb.png.1d9b142a07a597218e46b858134614bf.png

    • Thanks 1
  13. 11 минут назад, vop сказал:

    Ах, да. Клиентские роутеры, которые не поддерживают дуал-стек... Ну им можно не выдавать v6. Пока у них роутер не сдохнет. :) Нет же задачи обязательно и срочно всех перевести на ipv6. Фишка в том, что внедрение ipv6 происходит "мягко".  Т.е. для многих клиентов даже не заметно, что у них появляется второй ip :)

    они не понимают этого....разве что гики..Мы всем клиентам включаем при настройке роутера.

×
×
  • Create New...