Karfax Posted May 18, 2021 Posted May 18, 2021 Добавлю: activate = 1 deactivate = 2 .1.3.6.1.4.1.2011.6.128.1.1.2.46.1.1 и тут еще много чего https://github.com/nocproject/noc/blob/master/cmibs/huawei_xpon_mib.py
Alex210 Posted June 3, 2021 Posted June 3, 2021 Здравствуйте! Продолжаю осваивать взаимодействие с OLT по SNMP. На данный момент удалось: Получить всю необходимую информацию об ONU Найти MAC-адреса за ONU Привязать ONU Установить native-vlan ethernet-порту Осталась нерешенной одна задача - привязать ONU к сервис-порту. Тут описано как это сделать, только не хватает oid-ов ((( Многочасовые поиски по гуглу пока не увенчались успехом... Может у кого-то есть наработки по данному вопросу?)
Alex210 Posted June 4, 2021 Posted June 4, 2021 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 тут это описано, но ещё на первой строчке возникает ошибка(( Предполагаю, что сначала нужно создать сервис-порт, но как это сделать - вопрос....
dnserg Posted June 4, 2021 Posted June 4, 2021 <?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; } } } Может кому понадобиться
andr1y Posted June 5, 2021 Posted June 5, 2021 В 03.06.2021 в 17:16, Alex210 сказал: Здравствуйте! Продолжаю осваивать взаимодействие с OLT по SNMP. На данный момент удалось: Получить всю необходимую информацию об ONU Найти MAC-адреса за ONU Привязать ONU Установить native-vlan ethernet-порту Осталась нерешенной одна задача - привязать ONU к сервис-порту. Тут описано как это сделать, только не хватает oid-ов ((( Многочасовые поиски по гуглу пока не увенчались успехом... Может у кого-то есть наработки по данному вопросу?) Як вам вдалося "Найти MAC-адреса за ONU" по SNMP ? Ми таке тільки через телнет можемо отримувати.
vlad5503 Posted June 7, 2021 Posted June 7, 2021 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 Тут ранее я сам этот вопрос поднимал и мне тут помогли ещё расшифровать некоторые "кривые" серийники. Почитайте.
Alex210 Posted June 7, 2021 Posted June 7, 2021 В 05.06.2021 в 21:28, andr1y сказал: Як вам вдалося "Найти MAC-адреса за ONU" по SNMP ? Ми таке тільки через телнет можемо отримувати. Тут описано как это сделать по SNMP
lololo Posted September 23, 2021 Posted September 23, 2021 В 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
Alex210 Posted September 23, 2021 Posted September 23, 2021 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
vlad5503 Posted September 24, 2021 Posted September 24, 2021 (edited) 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 ))) Edited September 24, 2021 by vlad5503 Добавление сведений
lololo Posted September 24, 2021 Posted September 24, 2021 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
Alex210 Posted September 24, 2021 Posted September 24, 2021 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
lololo Posted September 24, 2021 Posted September 24, 2021 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
Alex210 Posted September 24, 2021 Posted September 24, 2021 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); 1
xaoc_nsk Posted December 29, 2021 Posted December 29, 2021 День добрый, коллеги. Кто то пробовал по snmp реализовать команду bind ip service-port X 10.x.x.x очень удобная фишка, пользуемся пока через консоль. Можно до 10 ip адресов задавать на клиентском сервис порту и только с этих адресов он может взаимодействовать с сетью, что исключает подмены и пр. ( бывают умники)
xaoc_nsk Posted December 29, 2021 Posted December 29, 2021 к примеру 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, чтобы поснифить команды, но не выйдет, хоть и серийники зарегистрировал) без подтверждения конторы ничего не получится скачать, а железки продавались реселлерами
pashaumka Posted February 15, 2022 Posted February 15, 2022 В 23.01.2020 в 14:23, Aleksandrs сказал: ответ от Хуавея как через snmp посмотреть мак за онт display mac addres by port..docx IT WORKS!
i_destr Posted May 5, 2022 Posted May 5, 2022 Колеги, вітаю Підкажіть, будь ласка, як можна за допомогою 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 Допоможіть, будь ласка Дякую
i_destr Posted May 5, 2022 Posted May 5, 2022 (edited) З цим розібрався, забув додати номер 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 сек - все запрацювало Edited May 5, 2022 by i_destr 2
splinter1989 Posted June 13, 2022 Posted June 13, 2022 (edited) Добрий день. Дякую всім в гілці, дуже дагато цінної інформації! Підкажіть, будь ласвка, чи знайшли Ви змогу витягнути клієнтські мак адреси на Huawei ma5600T по SNMP? Буду дуже вдячний за допомогу. P.S. Написав і побачив що вище є файлик з інструкцією. Сорі... Edited June 13, 2022 by splinter1989 Не помітив відповідь в гілці вище
pashaumka Posted June 13, 2022 Posted June 13, 2022 6 часов назад, splinter1989 сказал: Добрий день. Дякую всім в гілці, дуже дагато цінної інформації! Підкажіть, будь ласвка, чи знайшли Ви змогу витягнути клієнтські мак адреси на Huawei ma5600T по SNMP? Буду дуже вдячний за допомогу. P.S. Написав і побачив що вище є файлик з інструкцією. Сорі... Там есть немного "танцев с бубном".....
splinter1989 Posted June 14, 2022 Posted June 14, 2022 16 часов назад, pashaumka сказал: Там есть немного "танцев с бубном"..... В мене, нажаль, поки не вийшло(((. set проходить а get пусто : пише що нема такого оід.
vlad5503 Posted June 14, 2022 Posted June 14, 2022 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
splinter1989 Posted June 14, 2022 Posted June 14, 2022 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. А я пробую самі маки вмтягнути...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now