Перейти до

HUAWEI MA5683T OID и MIB


Рекомендованные сообщения

  • Відповіді 162
  • Створено
  • Остання відповідь

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

Можно пробовать здесь https://github.com/alexlansovich/gpon   Скрины здесь https://github.com/alexlansovich/gpon/tree/master/install/screens  

З цим розібрався, забув додати номер ONT, тобто OIDи мають бути такі:   snmpset -v2c -c private 10.1.1.2 \ 1.3.6.1.4.1.2011.6.128.1.1.2.53.1.2.4227867648.2 i 3 \ #авторизація за MAC(3) 1.3.6.

Вот еще найдено и нарыто в инете MIB:   Тип Ethernet порта на ону: 1.3.6.1.4.1.2011.6.128.1.1.2.62.1.21.portID.onuid.Ethid 34 - GigaEthernet, 24 - FastEthernet, -1 not   (Возможно 

Posted Images

  • 2 weeks later...

Здравствуйте!

Продолжаю осваивать взаимодействие с OLT по SNMP. На данный момент удалось:

  • Получить всю необходимую информацию об ONU
  • Найти MAC-адреса за ONU
  • Привязать ONU
  • Установить native-vlan ethernet-порту

Осталась нерешенной одна задача - привязать ONU к сервис-порту. Тут описано как это сделать, только не хватает oid-ов (((

Многочасовые поиски по гуглу пока не увенчались успехом... Может у кого-то есть наработки по данному вопросу?)

Ссылка на сообщение
Поделиться на других сайтах
16 часов назад, Alex210 сказал:

Здравствуйте!

Продолжаю осваивать взаимодействие с OLT по SNMP. На данный момент удалось:

  • Получить всю необходимую информацию об ONU
  • Найти MAC-адреса за ONU
  • Привязать ONU
  • Установить native-vlan ethernet-порту

Осталась нерешенной одна задача - привязать ONU к сервис-порту. Тут описано как это сделать, только не хватает oid-ов (((

Многочасовые поиски по гуглу пока не увенчались успехом... Может у кого-то есть наработки по данному вопросу?)

oid-ы нашёл)

1.3.6.1.4.1.2011.5.14.5.2.1.2.$service_port i 0

1.3.6.1.4.1.2011.5.14.5.2.1.3.$service_port i 10 // slot

1.3.6.1.4.1.2011.5.14.5.2.1.4.$service_port i 6 // pon

1.3.6.1.4.1.2011.5.14.5.2.1.5.$service_port i 4 // ont

1.3.6.1.4.1.2011.5.14.5.2.1.6.$service_port i 11 // gem

1.3.6.1.4.1.2011.5.14.5.2.1.7.$service_port i 4 // 4 - gpon, 6 - epon

1.3.6.1.4.1.2011.5.14.5.2.1.8.$service_port i 100 // vlan

1.3.6.1.4.1.2011.5.14.5.2.1.11.$service_port i 1 

1.3.6.1.4.1.2011.5.14.5.2.1.12.$service_port i 100 // user-vlan

тут это описано, но ещё на первой строчке возникает ошибка(( Предполагаю, что сначала нужно создать сервис-порт, но как это сделать - вопрос.... 

Ссылка на сообщение
Поделиться на других сайтах
<?php

namespace App;

use App\Jobs\OLTAddServicePort;
use DivineOmega\SSHConnection\SSHConnection;
use Mockery\Exception;
use SNMP;

class HuaweilOLT
{
  const GPON_ONU_QTY_IN_INTERFACE = '1.3.6.1.4.1.2011.6.128.1.1.2.21.1.16';
  const EPON_ONU_QTY_IN_INTERFACE = '1.3.6.1.4.1.2011.6.128.1.1.2.31.1.12';
  const GPON_OPTICS_TX_POWER_IN_INTERFACE = '1.3.6.1.4.1.2011.6.128.1.1.2.23.1.4';
  const EPON_OPTICS_TX_POWER_IN_INTERFACE = '1.3.6.1.4.1.2011.6.128.1.1.2.33.1.4';

  const GPON_ONT_UNREGISTERED = '1.3.6.1.4.1.2011.6.128.1.1.2.48.1.2';
  const EPON_ONT_UNREGISTERED = '1.3.6.1.4.1.2011.6.128.1.1.2.58.1.2';
  const GPON_ONT_REGISTERED_IN_INTERFACE = '1.3.6.1.4.1.2011.6.128.1.1.2.43.1.3.%s';
  const EPON_ONT_REGISTERED_IN_INTERFACE = '1.3.6.1.4.1.2011.6.128.1.1.2.53.1.3.%s';
  const GPON_ONT_DESCRIPTION = '1.3.6.1.4.1.2011.6.128.1.1.2.43.1.9.%s.%s';
  const EPON_ONT_DESCRIPTION = '1.3.6.1.4.1.2011.6.128.1.1.2.53.1.9.%s.%s';
  const GPON_ONT_DESCRIPTION_INTERFACE = '1.3.6.1.4.1.2011.6.128.1.1.2.43.1.9.%s';
  const EPON_ONT_DESCRIPTION_INTERFACE = '1.3.6.1.4.1.2011.6.128.1.1.2.53.1.9.%s';
  const GPON_ONT_SIGNALS_INTERFACE = '1.3.6.1.4.1.2011.6.128.1.1.2.51.1.4.%s';
  const ONT_SIGNALS_INTERFACE = '1.3.6.1.4.1.2011.6.128.1.1.2.104.1.5.%s';

  const ONT_CONFIGURED_STRING = 'configured';

  const GPON_ONT_STATUS = '1.3.6.1.4.1.2011.6.128.1.1.2.46.1.15.%s.%s'; // 1 - online , 2 - offline
  const ONT_STATUS = '1.3.6.1.4.1.2011.6.128.1.1.2.57.1.15.%s.%s'; // 1 - online , 2 - offline
  const GPON_ONT_SIGNAL = '1.3.6.1.4.1.2011.6.128.1.1.2.51.1.4.%s.%s';
  const ONT_SIGNAL = '1.3.6.1.4.1.2011.6.128.1.1.2.104.1.5.%s.%s';
  const GPON_ONT_DISTANCE = '1.3.6.1.4.1.2011.6.128.1.1.2.46.1.20.%s.%s';
  const ONT_DISTANCE = '1.3.6.1.4.1.2011.6.128.1.1.2.57.1.19.%s.%s';
  const GPON_ONT_DOWN_CAUSE = '1.3.6.1.4.1.2011.6.128.1.1.2.46.1.24.%s.%s'; // 13 - power , 2 - оптика
  const ONT_DOWN_CAUSE = '1.3.6.1.4.1.2011.6.128.1.1.2.57.1.25.%s.%s'; // 13 - power , 2 - оптика
  const GPON_ONT_SOFT_VERSION = '1.3.6.1.4.1.2011.6.128.1.1.2.45.1.1.%s.%s';
  const ONT_SOFT_VERSION = '1.3.6.1.4.1.2011.6.128.1.1.2.55.1.5.%s.%s';



  /* @var $snmpSession SNMP */
  private $snmpSession;

  /* @var $sshSession SSHConnection */
//  private $sshSession;

  /* @var $sshSession PHPTelnet */
  private $telnetSession;

  /* @var $telnetLog string[] */
  private $telnetLog;

  public function __construct()
  {
    $snmpSession =  new \SNMP(\SNMP::VERSION_2c, '192.168.101.18', 'comunity');
    $snmpSession->oid_increasing_check = FALSE;
    $this->snmpSession = $snmpSession;
  }

  private function getSnmpValue($oid) {
    $parts = explode(': ', $this->snmpSession->get($oid));
    if (strpos($parts[0], 'Hex-STRING') === 0) {
      return hex2bin(trim(str_replace(' ', '', str_replace('00', '', $parts[1]))));
    }
    return trim($parts[1]);
  }
  
  public function getOntDataByInterfaceOntId($ifIndex, $ontId) {
    $interface = $this->decode_ifIndex($ifIndex);
    switch ($interface['type']) {
      case 'epon':
        $oidStatus = vsprintf(self::ONT_STATUS, [$ifIndex, $ontId]);
        $oidSignal = vsprintf(self::ONT_SIGNAL, [$ifIndex, $ontId]);
        $oidDistance = vsprintf(self::ONT_DISTANCE, [$ifIndex, $ontId]);
        $oidDownCause = vsprintf(self::ONT_DOWN_CAUSE, [$ifIndex, $ontId]);
        $oidSoftVersion = vsprintf(self::ONT_SOFT_VERSION, [$ifIndex, $ontId]);
        $ifaceUrl = route('eponPort', ['ifIndex' => $ifIndex]);
        break;
      case 'gpon':
        $oidStatus = vsprintf(self::GPON_ONT_STATUS, [$ifIndex, $ontId]);
        $oidSignal = vsprintf(self::GPON_ONT_SIGNAL, [$ifIndex, $ontId]);
        $oidDistance = vsprintf(self::GPON_ONT_DISTANCE, [$ifIndex, $ontId]);
        $oidDownCause = vsprintf(self::GPON_ONT_DOWN_CAUSE, [$ifIndex, $ontId]);
        $oidSoftVersion = vsprintf(self::GPON_ONT_SOFT_VERSION, [$ifIndex, $ontId]);
        $ifaceUrl = route('gponPort', ['ifIndex' => $ifIndex]);
        break;
    }

    return [
      'ifaceUrl' => $ifaceUrl,
      'status' => $this->getSnmpValue($oidStatus),
      'softVersion' => $this->getSnmpValue($oidSoftVersion),
      'signal' => $this->getSnmpValue($oidSignal),
      'distance' => $this->getSnmpValue($oidDistance),
      'downCause' => $this->getSnmpValue($oidDownCause),
      'interface' => "{$interface['type']} {$interface['shelf']}/{$interface['slot']}/{$interface['port']} {$ontId}",
    ];
  }

  public function getONTsQuantityInInterfaces($type = 'epon') {
    $result = [];
    switch ($type) {
      case 'epon':
        $oid = self::EPON_ONU_QTY_IN_INTERFACE;
        break;
      case 'gpon':
        $oid = self::GPON_ONU_QTY_IN_INTERFACE;
        break;
    }
    try {
      $response = $this->snmpSession->walk($oid);
      if (is_array($response)) {
        foreach ($response as $key=>$value) {
          preg_match('/.([\d]+)$/', $key, $portRegexpResult);
          $result[$portRegexpResult[1]] = (int)(str_replace('INTEGER: ', '', trim($value)));
        }
      }
    } catch (\Exception $e) {}
    return $result;
  }

  public function getPONTxPowerInInterfaces($type = 'epon') {
    $result = [];
    switch ($type) {
      case 'epon':
        $oid = self::EPON_OPTICS_TX_POWER_IN_INTERFACE;
        break;
      case 'gpon':
        $oid = self::GPON_OPTICS_TX_POWER_IN_INTERFACE;
        break;
    }
    try {
      $response = $this->snmpSession->walk($oid);
      if (is_array($response)) {
        foreach ($response as $key=>$value) {
          preg_match('/.([\d]+)$/', $key, $portRegexpResult);
          $result[$portRegexpResult[1]] = (int)(str_replace('INTEGER: ', '', trim($value)))/100;
        }
      }
    } catch (\Exception $e) {}
    return $result;
  }

  public function getUnregisteredOnts() {
    $result = [];
    try {
      $response_epon = $this->snmpSession->walk(self::EPON_ONT_UNREGISTERED);
      if (is_array($response_epon)) {
        foreach ($response_epon as $key=>$value) {
          preg_match('/.([\d]+).([\d]+)$/', $key, $portRegexpResult);
          $result[$portRegexpResult[1]][$portRegexpResult[2]] = str_replace(' ', ':', str_replace('Hex-STRING: ', '', trim($value)));
        }
      }
    } catch (\Exception $e) {}
    try {
      $response_gpon = $this->snmpSession->walk(self::GPON_ONT_UNREGISTERED);
      if (is_array($response_gpon)) {
        foreach ($response_gpon as $key=>$value) {
          preg_match('/.([\d]+).([\d]+)$/', $key, $portRegexpResult);
          $result[$portRegexpResult[1]][$portRegexpResult[2]] = str_replace(' ', '', str_replace('Hex-STRING: ', '', trim($value)));
        }
      }
    } catch (\Exception $e) {}

    return $result;
  }

  public function getOntsSignalsInInterface($ifIndex) {
    $interface = $this->decode_ifIndex($ifIndex);
    $result = [];
    switch ($interface['type']) {
      case 'epon':
        $oid = vsprintf(self::ONT_SIGNALS_INTERFACE, [$ifIndex]);
        break;
      case 'gpon':
        $oid = vsprintf(self::GPON_ONT_SIGNALS_INTERFACE, [$ifIndex]);
        break;
    }
    try {
      $response = $this->snmpSession->walk($oid);
      if (is_array($response)) {
        foreach ($response as $key=>$value) {
          preg_match('/.([\d]+)$/', $key, $portRegexpResult);
          $result[$portRegexpResult[1]] = (int)(str_replace('INTEGER: ', '', trim($value)))/100;
        }
      }
    } catch (\Exception $e) {}

    return $result;
  }

  public function getRegisteredOntsInInterface($ifIndex) {
    $interface = $this->decode_ifIndex($ifIndex);
    $result = [];

    switch ($interface['type']) {
      case 'epon':
        $oid = vsprintf(self::EPON_ONT_REGISTERED_IN_INTERFACE, [$ifIndex]);
        try {
          $response = $this->snmpSession->walk($oid);
          if (is_array($response)) {
            foreach ($response as $key=>$value) {
              preg_match('/.([\d]+)$/', $key, $portRegexpResult);
              $result[$ifIndex][$portRegexpResult[1]] = strtolower(str_replace(' ', ':', str_replace('Hex-STRING: ', '', trim($value))));
            }
          }
        } catch (\Exception $e) {}
        break;

      case 'gpon':
        $oid = vsprintf(self::GPON_ONT_REGISTERED_IN_INTERFACE, [$ifIndex]);
        try {
          $response = $this->snmpSession->walk($oid);
          if (is_array($response)) {
            foreach ($response as $key=>$value) {
              preg_match('/.([\d]+)$/', $key, $portRegexpResult);

              $result[$ifIndex][$portRegexpResult[1]] = $this->valueToSerial($value);
            }
          }
        } catch (\Exception $e) {}
        break;
    }

    return $result;
  }

  private function valueToSerial($value) {
    if (strpos($value, 'Hex-STRING') !== false) {
      return strtolower(str_replace(' ', '', str_replace('Hex-STRING: ', '', trim($value))));
    }

    if (strpos($value, 'STRING') !== false) {
      return bin2hex(str_replace('"', '', str_replace('STRING: ', '', trim($value))));
    }

    return $value;
  }

  public function confirmOntsInInterface($ifIndex) {
    $interface = $this->decode_ifIndex($ifIndex);
    $this->telnetCheckSession();
    $result[] = $this->telnetSession->doCommand("config\n");
    sleep(1);
    $result[] = $this->telnetSession->doCommand("interface {$interface['type']} {$interface['shelf']}/{$interface['slot']}\n");
    sleep(1);
    switch ($interface['type']) {
      case 'epon':
        $result[] = $this->telnetSession->doCommand("ont confirm {$interface['port']} all mac-auth oam ont-lineprofile-name ftth ont-srvprofile-name ftth\n");
        break;
      case 'gpon':
        $result[] = $this->telnetSession->doCommand("ont confirm {$interface['port']} all sn-auth omci ont-lineprofile-name ftth ont-srvprofile-name ftth\n");
        break;
    }
    sleep(1);
    $result[] = $this->telnetSession->doCommand("\n");
    sleep(1);
    $result[] = $this->telnetSession->doCommand("quit\n");
    return $result;
  }

  public function getOntsUnconfiguredInInterface($ifIndex) {
    $interface = $this->decode_ifIndex($ifIndex);
    $result = [];
    switch ($interface['type']) {
      case 'epon':
        $oid = vsprintf(self::EPON_ONT_DESCRIPTION_INTERFACE, [$ifIndex]);
        break;
      case 'gpon':
        $oid = vsprintf(self::GPON_ONT_DESCRIPTION_INTERFACE, [$ifIndex]);
        break;
    }

    try {
      $response = $this->snmpSession->walk($oid);

      if (is_array($response)) {
        foreach ($response as $key=>$value) {
          preg_match('/.([\d]+)$/', $key, $ontRegexpResult);
          switch ($interface['type']) {
            case 'epon':
              $checkOid = "1.3.6.1.4.1.2011.6.128.1.1.2.81.1.5.{$ifIndex}.{$ontRegexpResult[1]}.1";
              break;
            case 'gpon':
              $checkOid = "1.3.6.1.4.1.2011.6.128.1.1.2.62.1.7.{$ifIndex}.{$ontRegexpResult[1]}.1";
              break;
          }
          $checkResult = $this->snmpSession->get($checkOid);
          if (!strpos($checkResult, '4094')) {
            $result[$ifIndex][] = $ontRegexpResult[1];
          }
        }
      }
    } catch (\Exception $e) {}

    return $result;
  }

  public function createOntsServicePortsInInterface($ifIndex) {
    $result = [];
    $interface = $this->decode_ifIndex($ifIndex);
    $this->telnetCheckSession();
    $unconfiguredOnts = $this->getOntsUnconfiguredInInterface($ifIndex);
    if ($unconfiguredOnts) {
      $result[] = $this->telnetSession->doCommand("config\n");
      sleep(2);
      foreach ($unconfiguredOnts[$ifIndex] as $ontId) {
        $vlan = $interface['slot'] . ($interface['port'] > 9 ? $interface['port'] - 10 : $interface['port']);
        $result[] = $this->telnetSession->doCommand("service-port vlan {$vlan} port {$interface['shelf']}/{$interface['slot']}/{$interface['port']} ont {$ontId} eth 1-4 multi-service user-vlan untagged\n");
        sleep(2);
        $result[] = $this->telnetSession->doCommand("\n");
        sleep(2);
        switch ($interface['type']) {
          case 'epon':
            $checkOid = "1.3.6.1.4.1.2011.6.128.1.1.2.81.1.5.{$ifIndex}.{$ontId}.1";
            break;
          case 'gpon':
            $checkOid = "1.3.6.1.4.1.2011.6.128.1.1.2.62.1.7.{$ifIndex}.{$ontId}.1";
            break;
        }
        $checkResult = $this->snmpSession->get($checkOid);
        if (!strpos($checkResult, '4094')) {
          OLTAddServicePort::dispatch($ifIndex, $ontId);
        } else {
          $this->setOntDescriptionAsConfigured($ifIndex, $ontId);
        }
      }
      $result[] = $this->telnetSession->doCommand("quit\n");
    }
    return $result;
  }

  public function createOntsServicePortsInInterfaceOnt($ifIndex, $ontId) {
    $result = [];
    $interface = $this->decode_ifIndex($ifIndex);
    $this->telnetCheckSession();
    $result[] = $this->telnetSession->doCommand("config\n");
    sleep(2);
    $vlan = $interface['slot'] . ($interface['slot'] > 9 ? $interface['slot'] - 10 : $interface['slot']);
    $result[] = $this->telnetSession->doCommand("service-port vlan {$vlan} port {$interface['shelf']}/{$interface['slot']}/{$interface['port']} ont {$ontId} eth 1 multi-service user-vlan untagged\n");
    sleep(2);
    $result[] = $this->telnetSession->doCommand("\n");
    sleep(2);
    switch ($interface['type']) {
      case 'epon':
        $checkOid = "1.3.6.1.4.1.2011.6.128.1.1.2.81.1.5.{$ifIndex}.{$ontId}.1";
        break;
      case 'gpon':
        $checkOid = "1.3.6.1.4.1.2011.6.128.1.1.2.62.1.7.{$ifIndex}.{$ontId}.1";
        break;
    }
    $checkResult = $this->snmpSession->get($checkOid);
    if (!strpos($checkResult, '4094')) {
      OLTAddServicePort::dispatch($ifIndex, $ontId);
    } else {
      $this->setOntDescriptionAsConfigured($ifIndex, $ontId);
    }
    $result[] = $this->telnetSession->doCommand("quit\n");
    return $result;
  }

  public function setOntDescriptionAsConfigured($ifIndex, $ontId) {
    $this->setOntDescription($ifIndex, $ontId, self::ONT_CONFIGURED_STRING);
  }

  public function setOntDescription($ifIndex, $ontId, $description) {
    $interface = $this->decode_ifIndex($ifIndex);
    switch ($interface['type']) {
      case 'epon':
        $oid = vsprintf(self::EPON_ONT_DESCRIPTION, [$ifIndex, $ontId]);
        break;
      case 'gpon':
        $oid = vsprintf(self::GPON_ONT_DESCRIPTION, [$ifIndex, $ontId]);
        break;
    }
    $this->snmpSession->set($oid, 's', $description);
  }

  public function deleteOntsInInterface($ifIndex) {
    $interface = $this->decode_ifIndex($ifIndex);
    $ontQuantity= $this->getONTsQuantityInInterfaces($interface['type']);
    if ($ontQuantity[$ifIndex] == 0) {
      return true;
    }
    $this->telnetCheckSession();
    $this->telnetExecCommands([
      "undo service-port port {$interface['shelf']}/{$interface['slot']}/{$interface['port']}",
      "",
      "y",
      "interface {$interface['type']} {$interface['shelf']}/{$interface['slot']}",
      "ont delete {$interface['port']} all",
      "y",
      "quit"
    ], true);
  }
//  private function checkSSHSession() {
//    if ($this->sshSession instanceof SSHConnection) {
//      return true;
//    }
//    $this->makeSSHSession();
//  }
//
//  private function makeSSHSession() {
//    $this->sshSession = (new SSHConnection())
//      ->to('192.168.101.18')
//      ->onPort(22)
//      ->as('login')
//      ->withPassword('password')
//      // ->withPrivateKey($privateKeyPath)
//      ->connect();
//  }

//  public function ssh() {
//    $this->checkSSHSession();
////    $command = $this->sshSession->run("quit");
//    $command = $this->sshSession->run("display system sys-info\n");
////    $command = $this->sshSession->run("enable\n");
////    $this->sshSession->run("config\n");
////    $command = $this->sshSession->run("display system sys-info");
//
//    dd($command->getOutput());  // 'Hello World'
//    dd($command->getRawError());
//  }

  private function telnetCheckSession() {
    if ($this->telnetSession instanceof PHPTelnet) {
      return true;
    }
    $this->telnetMakeSession();
  }

  private function telnetMakeSession() {
    $this->telnetSession = new PHPTelnet();
    $this->telnetSession->connect('192.168.101.18', 'user', 'pass');
    $this->telnetSession->doCommand("enable\n");
  }

  public function telnetCloseSession() {
    if ($this->telnetSession instanceof PHPTelnet) {
      $this->telnetSession->disconnect();
    }
  }

  public function telnetExecCommands($commands = [], $isConfiguration = true) {
    $this->telnetCheckSession();
    if ($isConfiguration) {
      $this->telnetLog[] = $this->telnetSession->doCommand("config\n");
      sleep(2);
    }
    foreach ($commands as $command) {
      $this->telnetLog[] = $this->telnetSession->doCommand("{$command}\n");
      sleep(2);
    }
    if ($isConfiguration) {
      $this->telnetLog[] = $this->telnetSession->doCommand("quit\n");
      sleep(2);
    }
  }

  public function telnetGetLog() {
    return $this->telnetLog;
  }


  public static function decode_ifIndex($ifIndex) {
    $board_type = ( $ifIndex & bindec('11111110000000000000000000000000') ) >> 25 ;
    switch($board_type) {
      case 126:
        $port_type="epon";
        $shelf_no       = ( $ifIndex & bindec('00000001111110000000000000000000') ) >> 19 ;
        $slot_no        = ( $ifIndex & bindec('00000000000001111110000000000000') ) >> 13 ;
        $port_no        = ( $ifIndex & bindec('00000000000000000001111100000000') ) >> 8  ;
        return(array("type"=>$port_type,"shelf"=>$shelf_no,"slot"=>$slot_no,"port"=>$port_no));
        break;
      case 125:
        $port_type = "gpon";
        $shelf_no       = ( $ifIndex & bindec('00000001111110000000000000000000') ) >> 19 ;
        $slot_no        = ( $ifIndex & bindec('00000000000001111110000000000000') ) >> 13 ;
        $port_no        = ( $ifIndex & bindec('00000000000000000001111100000000') ) >> 8  ;
        return(array("type"=>$port_type,"shelf"=>$shelf_no,"slot"=>$slot_no,"port"=>$port_no));
        break;
    }
  }
}

 

Может кому понадобиться

Ссылка на сообщение
Поделиться на других сайтах
В 03.06.2021 в 17:16, Alex210 сказал:

Здравствуйте!

Продолжаю осваивать взаимодействие с OLT по SNMP. На данный момент удалось:

  • Получить всю необходимую информацию об ONU
  • Найти MAC-адреса за ONU
  • Привязать ONU
  • Установить native-vlan ethernet-порту

Осталась нерешенной одна задача - привязать ONU к сервис-порту. Тут описано как это сделать, только не хватает oid-ов (((

Многочасовые поиски по гуглу пока не увенчались успехом... Может у кого-то есть наработки по данному вопросу?)

Як вам вдалося "Найти MAC-адреса за ONU" по SNMP ? Ми таке тільки через телнет можемо отримувати. 

Ссылка на сообщение
Поделиться на других сайтах

Andr1y, можно так найти серийник:

1.3.6.1.4.1.2011.6.128.1.1.2.43.1.3.

1.3.6.1.4.1.2011.6.128.1.1.2.43.1.3.$port.$id

Тут ранее я сам этот вопрос поднимал и мне тут помогли ещё расшифровать некоторые "кривые" серийники. Почитайте.

Ссылка на сообщение
Поделиться на других сайтах
В 05.06.2021 в 21:28, andr1y сказал:

Як вам вдалося "Найти MAC-адреса за ONU" по SNMP ? Ми таке тільки через телнет можемо отримувати. 

Тут описано как это сделать по SNMP

Ссылка на сообщение
Поделиться на других сайтах
  • 3 months later...
В 07.06.2021 в 08:10, Alex210 сказал:

Тут описано как это сделать по SNMP

К сожалению у меня ни на одном из OLT-ов (5683,5603,5608) mib-ов, которые применяются в данном мануале, нет. Может быть , от версии зависит...

Все, что есть:

1.3.6.1.4.1.2011.6.103.1.1.2.0 = INTEGER: 1
.1.3.6.1.4.1.2011.6.103.1.1.3.0 = INTEGER: 0
.1.3.6.1.4.1.2011.6.103.1.1.7.0 = ""
.1.3.6.1.4.1.2011.6.103.2.1.1.0 = INTEGER: 1
.1.3.6.1.4.1.2011.6.103.2.1.3.0 = INTEGER: 5
.1.3.6.1.4.1.2011.6.103.4.1.1.1.2.1 = Hex-STRING: 00 17 00 00 00 04 00 00 00 3F 00 01 00 04 01 00 01 01 00 02 00 01 00 
.1.3.6.1.4.1.2011.6.103.4.1.1.1.2.2 = Hex-STRING: 00 18 00 00 00 01 01 00 01 00 02 01 00 00 02 00 01 01 00 03 00 02 00 14 
.1.3.6.1.4.1.2011.6.103.4.1.1.1.2.3 = Hex-STRING: 00 18 00 00 00 01 01 00 01 00 02 01 00 00 02 00 01 01 00 03 00 02 00 0A 
.1.3.6.1.4.1.2011.6.103.4.1.1.1.2.4 = Hex-STRING: 00 30 00 00 00 01 01 00 01 00 1A 01 00 01 01 01 02 01 03 01 04 01 05 01 06 01 07 01 08 01 09 01 0A 01 0B 01 0C 00 02 00 01 01 00 03 00 02 02 58 
.1.3.6.1.4.1.2011.6.103.4.1.1.1.2.5 = Hex-STRING: 00 1D 00 00 00 04 00 00 07 FF 00 01 00 04 01 00 01 01 00 02 00 01 01 00 03 00 02 00 0A 
.1.3.6.1.4.1.2011.6.103.4.1.1.1.2.6 = Hex-STRING: 00 18 00 00 00 01 01 00 01 00 02 01 FF 00 02 00 01 01 00 03 00 02 00 78 
.1.3.6.1.4.1.2011.6.103.4.1.1.1.2.7 = Hex-STRING: 00 18 00 00 00 01 01 00 01 00 02 01 00 00 02 00 01 01 00 03 00 02 00 1E 

Соответственно, ничего не работает, начиная с первого же mib.

Error in packet.
Reason: Unknown Error
Failed object: SNMPv2-SMI::enterprises.2011.6.103.4.1.2.1.2.2

 

Ссылка на сообщение
Поделиться на других сайтах
55 минут назад, lololo сказал:

К сожалению у меня ни на одном из OLT-ов (5683,5603,5608) mib-ов, которые применяются в данном мануале, нет. Может быть , от версии зависит...

Все, что есть:


1.3.6.1.4.1.2011.6.103.1.1.2.0 = INTEGER: 1
.1.3.6.1.4.1.2011.6.103.1.1.3.0 = INTEGER: 0
.1.3.6.1.4.1.2011.6.103.1.1.7.0 = ""
.1.3.6.1.4.1.2011.6.103.2.1.1.0 = INTEGER: 1
.1.3.6.1.4.1.2011.6.103.2.1.3.0 = INTEGER: 5
.1.3.6.1.4.1.2011.6.103.4.1.1.1.2.1 = Hex-STRING: 00 17 00 00 00 04 00 00 00 3F 00 01 00 04 01 00 01 01 00 02 00 01 00 
.1.3.6.1.4.1.2011.6.103.4.1.1.1.2.2 = Hex-STRING: 00 18 00 00 00 01 01 00 01 00 02 01 00 00 02 00 01 01 00 03 00 02 00 14 
.1.3.6.1.4.1.2011.6.103.4.1.1.1.2.3 = Hex-STRING: 00 18 00 00 00 01 01 00 01 00 02 01 00 00 02 00 01 01 00 03 00 02 00 0A 
.1.3.6.1.4.1.2011.6.103.4.1.1.1.2.4 = Hex-STRING: 00 30 00 00 00 01 01 00 01 00 1A 01 00 01 01 01 02 01 03 01 04 01 05 01 06 01 07 01 08 01 09 01 0A 01 0B 01 0C 00 02 00 01 01 00 03 00 02 02 58 
.1.3.6.1.4.1.2011.6.103.4.1.1.1.2.5 = Hex-STRING: 00 1D 00 00 00 04 00 00 07 FF 00 01 00 04 01 00 01 01 00 02 00 01 01 00 03 00 02 00 0A 
.1.3.6.1.4.1.2011.6.103.4.1.1.1.2.6 = Hex-STRING: 00 18 00 00 00 01 01 00 01 00 02 01 FF 00 02 00 01 01 00 03 00 02 00 78 
.1.3.6.1.4.1.2011.6.103.4.1.1.1.2.7 = Hex-STRING: 00 18 00 00 00 01 01 00 01 00 02 01 00 00 02 00 01 01 00 03 00 02 00 1E 

Соответственно, ничего не работает, начиная с первого же mib.


Error in packet.
Reason: Unknown Error
Failed object: SNMPv2-SMI::enterprises.2011.6.103.4.1.2.1.2.2

 

У нас на 5683,5603,5608 работает. 

Эти oid-ы для установки (snmpset) задачи запроса:

1.3.6.1.4.1.2011.6.103.4.1.2.1.2.2

1.3.6.1.4.1.2011.6.103.4.1.2.1.3.2

1.3.6.1.4.1.2011.6.103.4.1.2.1.4.2

 

Дальше ждём 4-6 секунд но не позже 20 секунд

и делаем snmpget

1.3.6.1.4.1.2011.6.103.4.1.3.1.2.2.0

1.3.6.1.4.1.2011.6.103.4.1.3.1.3.2.0

1.3.6.1.4.1.2011.6.103.4.1.3.1.4.2.0

 

Ссылка на сообщение
Поделиться на других сайтах
17 часов назад, lololo сказал:

К сожалению у меня ни на одном из OLT-ов (5683,5603,5608) mib-ов, которые применяются в данном мануале, нет. Может быть , от версии зависит...

Все, что есть:



1.3.6.1.4.1.2011.6.103.1.1.2.0 = INTEGER: 1
.1.3.6.1.4.1.2011.6.103.1.1.3.0 = INTEGER: 0
.1.3.6.1.4.1.2011.6.103.1.1.7.0 = ""
.1.3.6.1.4.1.2011.6.103.2.1.1.0 = INTEGER: 1
.1.3.6.1.4.1.2011.6.103.2.1.3.0 = INTEGER: 5
.1.3.6.1.4.1.2011.6.103.4.1.1.1.2.1 = Hex-STRING: 00 17 00 00 00 04 00 00 00 3F 00 01 00 04 01 00 01 01 00 02 00 01 00 
.1.3.6.1.4.1.2011.6.103.4.1.1.1.2.2 = Hex-STRING: 00 18 00 00 00 01 01 00 01 00 02 01 00 00 02 00 01 01 00 03 00 02 00 14 
.1.3.6.1.4.1.2011.6.103.4.1.1.1.2.3 = Hex-STRING: 00 18 00 00 00 01 01 00 01 00 02 01 00 00 02 00 01 01 00 03 00 02 00 0A 
.1.3.6.1.4.1.2011.6.103.4.1.1.1.2.4 = Hex-STRING: 00 30 00 00 00 01 01 00 01 00 1A 01 00 01 01 01 02 01 03 01 04 01 05 01 06 01 07 01 08 01 09 01 0A 01 0B 01 0C 00 02 00 01 01 00 03 00 02 02 58 
.1.3.6.1.4.1.2011.6.103.4.1.1.1.2.5 = Hex-STRING: 00 1D 00 00 00 04 00 00 07 FF 00 01 00 04 01 00 01 01 00 02 00 01 01 00 03 00 02 00 0A 
.1.3.6.1.4.1.2011.6.103.4.1.1.1.2.6 = Hex-STRING: 00 18 00 00 00 01 01 00 01 00 02 01 FF 00 02 00 01 01 00 03 00 02 00 78 
.1.3.6.1.4.1.2011.6.103.4.1.1.1.2.7 = Hex-STRING: 00 18 00 00 00 01 01 00 01 00 02 01 00 00 02 00 01 01 00 03 00 02 00 1E 

Соответственно, ничего не работает, начиная с первого же mib.



Error in packet.
Reason: Unknown Error
Failed object: SNMPv2-SMI::enterprises.2011.6.103.4.1.2.1.2.2

 

Мы когда купили 5683 поискали мануал. Вначале подключились по телнету через СОМ порт. Настроили IP. Потом перешли на snmp и после нескольких пробных запросов получили в ответ порядка 80 тысяч записей кодов оидо/мибов. И начали изучение  их. Долго мучительно, с ошибками, но то что нам надо было для управления мы нашли. Так что и у Вас должно все получиться. Например Вы должный увидеть такое - 2011.6.106.1.1.0 = IpAddress: 192.168.1.1  Который меняете на свой и который должен быть доступен далее для управления.

И да.. самое интересное, что для СОМ порта там требуется цисковский кабель. Но Вы сами можете его сделать из простого СОМ-а и дешевле будет раз в 500 )))

Відредаговано vlad5503
Добавление сведений
Ссылка на сообщение
Поделиться на других сайтах
17 часов назад, Alex210 сказал:

У нас на 5683,5603,5608 работает. 

Эти oid-ы для установки (snmpset) задачи запроса:

1.3.6.1.4.1.2011.6.103.4.1.2.1.2.2

1.3.6.1.4.1.2011.6.103.4.1.2.1.3.2

1.3.6.1.4.1.2011.6.103.4.1.2.1.4.2

 

Дальше ждём 4-6 секунд но не позже 20 секунд

и делаем snmpget

1.3.6.1.4.1.2011.6.103.4.1.3.1.2.2.0

1.3.6.1.4.1.2011.6.103.4.1.3.1.3.2.0

1.3.6.1.4.1.2011.6.103.4.1.3.1.4.2.0

 

Это ясно, что это не для чтения. НО, тем не менее, на первом же запросе к ....4.1.2.1.2.2   - ошибка.

snmpset -v2c -c write_community 10.201.*.* 1.3.6.1.4.1.2011.6.103.4.1.2.1.2.2 i 4 
Error in packet.
Reason: Unknown Error
Failed object: SNMPv2-SMI::enterprises.2011.6.103.4.1.2.1.2.2

 

Ссылка на сообщение
Поделиться на других сайтах
36 минут назад, lololo сказал:

Это ясно, что это не для чтения. НО, тем не менее, на первом же запросе к ....4.1.2.1.2.2   - ошибка.


snmpset -v2c -c write_community 10.201.*.* 1.3.6.1.4.1.2011.6.103.4.1.2.1.2.2 i 4 
Error in packet.
Reason: Unknown Error
Failed object: SNMPv2-SMI::enterprises.2011.6.103.4.1.2.1.2.2

 

Могу предположить что все три oid-а нужно выполнить за одну snmpset

Ссылка на сообщение
Поделиться на других сайтах
1 минуту назад, Alex210 сказал:

Могу предположить что все три oid-а нужно выполнить за одну snmpset

С этого начинал. Результат аналогичный. Потом уже стал пытаться по одной.

snmpset -v2c -c write_community 10.202.*.* 1.3.6.1.4.1.2011.6.103.4.1.2.1.2.2 i 4 1.3.6.1.4.1.2011.6.103.4.1.2.1.3.2 x "00 0B 01 00 00 05 00 07 06 00 06" 1.3.6.1.4.1.2011.6.103.4.1.2.1.4.2 i 4
Error in packet.
Reason: Unknown Error
Failed object: SNMPv2-SMI::enterprises.2011.6.103.4.1.2.1.2.2

 

Ссылка на сообщение
Поделиться на других сайтах
1 час назад, lololo сказал:

С этого начинал. Результат аналогичный. Потом уже стал пытаться по одной.


snmpset -v2c -c write_community 10.202.*.* 1.3.6.1.4.1.2011.6.103.4.1.2.1.2.2 i 4 1.3.6.1.4.1.2011.6.103.4.1.2.1.3.2 x "00 0B 01 00 00 05 00 07 06 00 06" 1.3.6.1.4.1.2011.6.103.4.1.2.1.4.2 i 4
Error in packet.
Reason: Unknown Error
Failed object: SNMPv2-SMI::enterprises.2011.6.103.4.1.2.1.2.2

 

Я делаю по сервис-порту, значение на PHP получаю так: '000A01070004' . str_pad(dechex($service_port), 8, '0', STR_PAD_LEFT);

  • Like 1
Ссылка на сообщение
Поделиться на других сайтах
  • 3 months later...

День добрый, коллеги.
Кто то пробовал по snmp реализовать команду bind ip service-port X 10.x.x.x
очень удобная фишка, пользуемся пока через консоль. Можно до 10 ip адресов задавать на клиентском сервис порту и только с этих адресов он может взаимодействовать с сетью, что исключает подмены и пр. ( бывают умники)

Ссылка на сообщение
Поделиться на других сайтах

к примеру 

 

NMPv2-SMI::enterprises.2011.5.14.3.2.1.3.8.0 = IpAddress: 10.28.0.77
это вывод уже назначенного ip на сервис port (-1) т.е на 7 сервис порт. 0 при этом это просто id записи.
заменить тут не выходит, в принципе и из консоли тоже самое, можно только удалить и создать новый.

 

а по snmpset ошибка при попытке добавления

 

Error in packet.
Reason: Unknown Error
Failed object: iso.3.6.1.4.1.2011.5.14.3.2.1.3.8.0

 

удаление по snmp работает, методом подбора нашел NMPv2-SMI::enterprises.2011.5.14.3.2.1.4.8.0 i 6

Хотел скачать ems, чтобы поснифить команды, но не выйдет, хоть и серийники зарегистрировал) без подтверждения конторы ничего не получится скачать, а железки продавались реселлерами

Ссылка на сообщение
Поделиться на других сайтах
  • 1 month later...
  • 2 months later...

Колеги, вітаю

 

Підкажіть, будь ласка, як можна за допомогою SNMP зареєструвати ONU GEPON (не GPON) на шасі?

 

Через cli формат команд наступний:

interface epon 0/1
ont add 4 2 mac-auth XXXX-XXXX-XXXX oam ont-lineprofile-id 10 ont-srvprofile-id 100 desc "USERLOGIN"

 

За аналогією з реєстрацією GPON пробував наступну команду, але отримую помилку

snmpset -v2c -c private 10.1.1.2 \
1.3.6.1.4.1.2011.6.128.1.1.2.53.1.2.4227867648 i 3 \ #авторизація за MAC(3)
1.3.6.1.4.1.2011.6.128.1.1.2.53.1.3.4227867648 x 0xXXXXXXXXXXXX \ #MAC-адреса ONU
1.3.6.1.4.1.2011.6.128.1.1.2.53.1.6.4227867648 i 1 \ #management mode oam(1)
1.3.6.1.4.1.2011.6.128.1.1.2.53.1.7.4227867648 s LINEPROFILE_NAME \ #назва лінійного профілю
1.3.6.1.4.1.2011.6.128.1.1.2.53.1.8.4227867648 s SERVICEPROFILE_NAME \ #назва сервісного профілю
1.3.6.1.4.1.2011.6.128.1.1.2.53.1.9.4227867648 s USERLOGIN \ #description
1.3.6.1.4.1.2011.6.128.1.1.2.53.1.10.4227867648 i 4   # entry status CreateAndGo(4)

 

Помилка наступна:

Error in packet.
Reason: noCreation (That table does not support row creation or that object can not ever be created)
Failed object: SNMPv2-SMI::enterprises.2011.6.128.1.1.2.53.1.2.4227867648

 

Допоможіть, будь ласка

Дякую

Ссылка на сообщение
Поделиться на других сайтах

З цим розібрався, забув додати номер ONT, тобто OIDи мають бути такі:

 

snmpset -v2c -c private 10.1.1.2 \
1.3.6.1.4.1.2011.6.128.1.1.2.53.1.2.4227867648.2 i 3 \ #авторизація за MAC(3)
1.3.6.1.4.1.2011.6.128.1.1.2.53.1.3.4227867648.2 x 0xXXXXXXXXXXXX \ #MAC-адреса ONU
1.3.6.1.4.1.2011.6.128.1.1.2.53.1.6.4227867648.2 i 1 \ #management mode oam(1)
1.3.6.1.4.1.2011.6.128.1.1.2.53.1.7.4227867648.2 s LINEPROFILE_NAME \ #назва лінійного профілю
1.3.6.1.4.1.2011.6.128.1.1.2.53.1.8.4227867648.2 s SERVICEPROFILE_NAME \ #назва сервісного профілю
1.3.6.1.4.1.2011.6.128.1.1.2.53.1.9.4227867648.2 s USERLOGIN \ #description
1.3.6.1.4.1.2011.6.128.1.1.2.53.1.10.4227867648.2 i 4   # entry status CreateAndGo(4)

 

Тепер проблема з default native vlan, команда так само не відпрацьовує

 

cli:
ont port native-vlan 4 2 eth 1 vlan 10

snmp:
snmpset -v2c -c vem5jeb9 10.10.240.3 \
1.3.6.1.4.1.2011.6.128.1.1.2.81.1.5.4227867648.2.1 i 10

Error in packet.
Reason: noCreation (That table does not support row creation or that object can not ever be created)
Failed object: SNMPv2-SMI::enterprises.2011.6.128.1.1.2.81.1.5.4227867648.2.1

 

 

UPD

Розібрався, дякую. Для зацікавлених - потрібно ставити затримку між створенням ONT та налаштуванням vlan на eth, поставив 5 сек - все запрацювало

Відредаговано i_destr
  • Like 2
Ссылка на сообщение
Поделиться на других сайтах
  • 1 month later...

Добрий день. Дякую всім в гілці, дуже дагато цінної інформації!

Підкажіть, будь ласвка, чи знайшли Ви змогу витягнути клієнтські мак адреси на Huawei ma5600T по SNMP?

Буду дуже вдячний за допомогу.

 

P.S. Написав і побачив що вище є файлик з інструкцією. Сорі...

Відредаговано splinter1989
Не помітив відповідь в гілці вище
Ссылка на сообщение
Поделиться на других сайтах
6 часов назад, splinter1989 сказал:

Добрий день. Дякую всім в гілці, дуже дагато цінної інформації!

Підкажіть, будь ласвка, чи знайшли Ви змогу витягнути клієнтські мак адреси на Huawei ma5600T по SNMP?

Буду дуже вдячний за допомогу.

 

P.S. Написав і побачив що вище є файлик з інструкцією. Сорі...

Там есть немного "танцев с бубном".....

Ссылка на сообщение
Поделиться на других сайтах
16 часов назад, pashaumka сказал:

Там есть немного "танцев с бубном".....

В мене, нажаль, поки не вийшло(((. set проходить а get пусто : пише що нема такого оід. 

Ссылка на сообщение
Поделиться на других сайтах

I make a request like this:

snmpwalk -v2c -c "user" "IP" 1.3.6.1.4.1.2011.6.128.1.1.2.46.1.21.numer_optic_port.ID_ONU

The answer will be like this:

 

SNMPv2-SMI::enterprises.2011.6.128.1.1.2.46.1.21.numer_optic_port.ID_ONU = INTEGER: 3

 

Ссылка на сообщение
Поделиться на других сайтах
4 минуты назад, vlad5503 сказал:

I make a request like this:


snmpwalk -v2c -c "user" "IP" 1.3.6.1.4.1.2011.6.128.1.1.2.46.1.21.numer_optic_port.ID_ONU

The answer will be like this:

 


SNMPv2-SMI::enterprises.2011.6.128.1.1.2.46.1.21.numer_optic_port.ID_ONU = INTEGER: 3

 

hwGponDeviceOntControlMacCount   Це ви отримуєте кількість маків за ont. А я пробую самі маки вмтягнути...

Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Вхід

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.

  • Схожий контент

    • Від monark
      I sell files to unlock OLT ZTE and OLT Huawei.
      Розблокуйте свої OLT самостійно, щоб прийняти будь-який ONT.
       
      OLT ZTE: C300, C320, C350
       
      OLT HUAWEI: MA5800 X2, X7, X15 and X17 all boards / всі дошки
      OLT HUAWEI: MA56XX all boards / всі дошки
       
      Unlock your OLTs yourself to accept any ONT.
      Розблокуйте свої OLT самостійно, щоб прийняти будь-який ONT.
       
       
      PVT
    • Від Rostyk.07
      Після кожного вимкнення з мережі він повертається до заводських налаштувань. За аналогічною темою люди пропонують шукати акумулятор і замінювати його. Роутер розібрав, батареї не знайшов. Я знайшов аналогічну тему на форумі Orange, хтось писав, що ремонт банальний і будь-який Електронік впорається. Але не написали що саме міняти. (часта несправність цього роутера. Якийсь заводський дефект або, як хтось віддає перевагу теоріям змови, навмисні дії Huawei, щоб купувати нові пристрої.) До цього часу, роутер працював багато років без глюків. БП підкинув, нічого не дало. Прошивку міняв. Махнути флеш або почати з заміни конденсаторів? Опір 5,6K на кнопці reset!


    • Від ajax75
      Керовані комутатори у заводських налаштуваннях з вухами та кабелями. 
      Без битих портів (всі порти тестувались).
      До 10 шт. вартість 1400 грн./шт.
      від 10 ціна обговорюється.
      В наявності 20+ шт.

    • Від prototip
      Продам новий акумулятор LiFePo4 48в 100 аН Huawei ESM48-100 5кВт.
      Ціна питання 1300 уе
      15s - дуже зручно для телекома.
      Якість брендового обладнання від Huawei.

    • Від kotqq
      Нашлось несколько коробок новых GPON Huawei ONU HG8010 C+, цена 13$
       




×
×
  • Створити нове...