Перейти до

Мониторинг OLT по snmp


onihack

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

Вначале попробуйте сбросить\прошить\перерегать. С другими, такой же модели, проблем нет?

Ссылка на сообщение
Поделиться на других сайтах
  • 2 months later...
  • Відповіді 273
  • Створено
  • Остання відповідь

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

BDCOM темплейт для cacti. В 36xx мониторит сигнал только со стороны OLT. gepon-signal-template.tar.gz

snmpwalk -v2c -Cc -c wcvbhytredcvbvgu 172.16.244.22 .1.3.6.1.4.1.3320.101.11.1.1.7 mac onu (в bin ) и  уровень в  /100 snmpwalk -v2c -Cc -c wcvbhytredcvbvgu 172.16.244.22 .1.3.6.1.4.1.3320.101.10.1.

Нашел, возможно кому то пригодится P3616-2TE anton@work-pc:~$ snmpget -v1 -c olt_snmp_community  olt_ip 1.3.6.1.4.1.3320.9.181.1.1.7.1 iso.3.6.1.4.1.3320.9.181.1.1.7.1 = INTEGER: 44 IF-BDCOM4#sh

Posted Images

Подскажите пожалуйста, каким MiBом можно вытянуть вот этот параметр:

 

pon#sh ru

!

epon onu description My_ONU

ifDescr. показывает EPON0/3:1, но не My_ONU. Может кто-то поделится подобным опытом?

 

Голова BDCom P3310C build 33463

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

Было бы хорошо, если было бы так просто.

IF-MIB::ifAlias.144 = STRING:

пустая строка.

ifName выдвёт данные аналогиные ifDescr, все что легко не подходит.

Ссылка на сообщение
Поделиться на других сайтах
## snmpwalk -v2c -cxxx 192.168.2.26 ifAlias

IF-MIB::ifAlias.1 = STRING:

IF-MIB::ifAlias.2 = STRING:

IF-MIB::ifAlias.3 = STRING:

IF-MIB::ifAlias.4 = STRING:

IF-MIB::ifAlias.5 = STRING: UPLINK_2.38_port_2

IF-MIB::ifAlias.6 = STRING:

IF-MIB::ifAlias.7 = STRING:

IF-MIB::ifAlias.8 = STRING:

IF-MIB::ifAlias.9 = STRING:

IF-MIB::ifAlias.10 = STRING:

IF-MIB::ifAlias.11 = STRING:

IF-MIB::ifAlias.12 = STRING: ***_BANK_***

IF-MIB::ifAlias.13 = STRING: ***_KIROVA_***

IF-MIB::ifAlias.14 = STRING: ***_Market_13_***

IF-MIB::ifAlias.15 = STRING: ***_VOKZAL_***

......

 

 

проверил на прошивках

BDCOM P3310B Software, Version 10.1.0B Build 29333

BDCOM P3310B Software, Version 10.1.0B Build 39287

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

snmpwalk -v2c -cxxx xxx.xxx.xxx ifAlias

 

IF-MIB::ifAlias.17 = STRING:
IF-MIB::ifAlias.18 = STRING:
IF-MIB::ifAlias.19 = STRING:
IF-MIB::ifAlias.20 = STRING:
IF-MIB::ifAlias.21 = STRING:
IF-MIB::ifAlias.22 = STRING:
IF-MIB::ifAlias.23 = STRING:
IF-MIB::ifAlias.24 = STRING:
IF-MIB::ifAlias.25 = STRING:
IF-MIB::ifAlias.26 = STRING:
IF-MIB::ifAlias.27 = STRING:

sh running-config

!

!

!

interface EPON0/2:28
  epon onu description ХХХХХХХХ

 

 

Где подвох?
 

 

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

У меня так

 
interface EPON0/1:10
 description хххххххх
 

Ваши данные ищите здесь

1.3.6.1.4.1.3320.101.11.1.1.3.8.х.х.х.х.х.х

где х.х.х.х.х.х - мак ону в десятичном формате (FF=255)

Відредаговано vlin
Ссылка на сообщение
Поделиться на других сайтах
  • 5 weeks later...

Не могу найти. Кто-то реализовывал перезагрузку онушки по snmp?

 

есть таблица 1.3.6.1.4.1.3320.101.25 bdEponOnuReset но как пользоваться х.з.

 

 

И что-то внятное с состоянием медных портов у кого-то получилось?

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

Как всегда отвечаю сам ))
 

snmpset -v1 -c xxx x.x.x.x .1.3.6.1.4.1.3320.101.10.1.1.29.13 i 0

"onuReset" .1.3.6.1.4.1.3320.101.10.1.1.29.13.llid_onu

присваиваем Integer 0 онушка бутается.
 

Aug 8 20:42:26 %EPON-ONUDEREG: ONU fcfa.f7c5.a3f6 is deregistered on EPON0/1:3.
Aug 8 20:42:28 %EPON-ONUREG: ONU fcfa.f7c5.a3f6 is registered on EPON0/1:3.
Aug 8 20:42:28 %EPON-ONUAUTHEN: ONU fcfa.f7c5.a3f6 is authenticated on EPON0/1:3.
Aug 8 20:42:29 %OLT: Interface EPON0/1:3's OAM Operational Status: Operational
Aug 8 20:42:32 ONU register on interface EPON0/1:3 for the first time!
Aug 8 20:42:32 %OLT: Interface EPON0/1:3's CTC OAM extension negotiated successfully!

C медью ситуация следующая:

 

XPON - показывает туфту

Alistar - показывает туфту через раз

BDCOM - работает идеально.

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

Ще пиляю... Можна зробити майже все, але потрібна порада по часу опитування OLT, портів, ONU. Порадьте хтось через які інтервали зробити опитування, що б було мінімальне навантаження на OLT...

Дуже вже слабі в цих залізяках CPU.

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

В понконтроле советуют брать 3 минуты на 1 олт.

А чем собсно понконтрол не угодил?

Я мав на увазі інтервали опитування. Наприклад порти кожні 10 хв., ОНУ кожні 20 хв., і так далі...

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

 

 

Понконтрол заточен в основном под BDCOM,в dude можно мониторить шо душа пожелает

Открываете ПХП и точите под нужные ОИДы. Проблем нет. 

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

Доброго времени суток.

 

Код опроса OLT-a примерно 20 с.:

<?php
$time1= date("Y-m-d H:i:s");

 echo "</br>";
$ip='';
$ro='';
$equipment_id='';
  echo "</br>SysInfo</br>";
$session = new SNMP(SNMP::VERSION_2C, $ip, $ro);
//$session->valueretrieval = SNMP_VALUE_PLAIN;
  $sys = $session->walk("1.3.6.1.2.1.1", TRUE);
  var_export($sys);
 echo "</br>";


$ifDescr = $session->walk(".1.3.6.1.2.1.2.2.1.2", TRUE);

$ifSpeed = $session->walk(".1.3.6.1.2.1.2.2.1.5", TRUE);

$ifAdminStatus = $session->walk(".1.3.6.1.2.1.2.2.1.7", TRUE);

$ifOperStatus = $session->walk(".1.3.6.1.2.1.2.2.1.8", TRUE);

$ifInErrors = $session->walk(".1.3.6.1.2.1.2.2.1.14", TRUE);

$ifOutErrors = $session->walk(".1.3.6.1.2.1.2.2.1.20", TRUE);

$ONUMAC = $session->walk("1.3.6.1.4.1.3320.101.10.1.1.3", TRUE);

$ONURxLevel = $session->walk("1.3.6.1.4.1.3320.101.10.5.1.5", TRUE);

$ONUTemp = $session->walk("1.3.6.1.4.1.3320.101.10.5.1.2", TRUE);

$ONUDist = $session->walk("1.3.6.1.4.1.3320.101.10.1.1.27", TRUE);

$ONUVendor = $session->walk("1.3.6.1.4.1.3320.101.10.1.1.1", TRUE);

$ONUModel = $session->walk("1.3.6.1.4.1.3320.101.10.1.1.2", TRUE);

/*$session =  new SNMP(SNMP::VERSION_1, $ip, $ro);
$session->oid_increasing_check = FALSE;
$session->oid_output_format = SNMP_OID_OUTPUT_NUMERIC;
$UserMAC = $session->walk("1.3.6.1.4.1.3320.152.1.1.3", TRUE);*/



	foreach ($ifDescr as $key => $value) {
	$iface[$key]['IfId']=$key;	
	$value=explode(' ', $value);
	$value=end($value);
	$value=trim($value);
	$value = str_replace("\"", "", $value);
	$iface[$key]['IfDescr']=$value;
	}
	foreach ($ifSpeed as $key => $value) {
	$value=explode(':', $value);
	$value=end($value);
	$value=trim($value);
	$iface[$key]['IfSpeed']=$value;
	}
	foreach ($ifAdminStatus as $key => $value) {
	$value=explode(':', $value);
	$value=end($value);
	$value=trim($value);
	$iface[$key]['IfAdminStatus']=$value;
	}
	foreach ($ifOperStatus as $key => $value) {
	$value=explode(':', $value);
	$value=end($value);
	$value=trim($value);
	$iface[$key]['IfOperStatus']=$value;
	}
	foreach ($ifInErrors as $key => $value) {
	$value=explode(':', $value);
	$value=end($value);
	$value=trim($value);
	$iface[$key]['IfInErrors']=$value;
	}
	foreach ($ifOutErrors as $key => $value) {
	$value=explode(':', $value);
	$value=end($value);
	$value=trim($value);
	$iface[$key]['IfOutErrors']=$value;
	}
	foreach ($ONUMAC as $key => $value) {
	$value=explode(':', $value);
	$value=end($value);
	$value=trim($value);
	$value = str_replace (" ", ":", $value);
	$iface[$key]['ONUMAC']=$value;
	}
	foreach ($ONURxLevel as $key => $value) {
	$value=explode(':', $value);
	$value=end($value);
	$value=trim($value);
	$iface[$key]['ONURxLevel']=$value;
	}
	foreach ($ONUTemp as $key => $value) {
	$value=explode(':', $value);
	$value=end($value);
	$value=trim($value);
	$value = $value/256;
	$value = round($value, 2);
	$iface[$key]['ONUTemp']=$value;
	}
	foreach ($ONUDist as $key => $value) {
	$value=explode(':', $value);
	$value=end($value);
	$value=trim($value);
	$iface[$key]['ONUDist']=$value;
	}
	foreach ($ONUVendor as $key => $value) {
	$value=explode(':', $value);
	$value=end($value);
	$value=trim($value);
	$value = str_replace("\"", "", $value);
	$iface[$key]['ONUVendor']=$value;
	}
	foreach ($ONUModel as $key => $value) {
	$value=explode(':', $value);
	$value=end($value);
	$value=trim($value);
	$value = str_replace("\"", "", $value);
	$iface[$key]['ONUModel']=$value;
	}

foreach ($iface as $key){
	echo '</br>';
	$date=date("Y-m-d H:i:s");
	$IfId=$equipment_id.'_'.$key['IfId'];
	$IfDescr=$key['IfDescr'];
	$IfSpeed=$key['IfSpeed']; 
	$IfAdminStatus=$key['IfAdminStatus']; 
	$IfOperStatus=$key['IfOperStatus']; 
	$IfInErrors=$key['IfInErrors']; 
	$IfOutErrors=$key['IfOutErrors'];
	if(isset( $key['ONUMAC'])){
	$ONUMAC=$key['ONUMAC'];}else{$ONUMAC=NULL;}
	if(isset( $key['ONURxLevel'])){
	$ONURxLevel=$key['ONURxLevel']/10;}else{$ONURxLevel=NULL;}
	if(isset( $key['ONUTemp'])){
	$ONUTemp=$key['ONUTemp'];}else{$ONUTemp=NULL;}
	if(isset( $key['ONUDist'])){
	$ONUDist=$key['ONUDist'];}else{$ONUDist=NULL;}
	if(isset( $key['ONUVendor'])){
	$ONUVendor=$key['ONUVendor'];}else{$ONUVendor=NULL;}
	if(isset( $key['ONUModel'])){
	$ONUModel=$key['ONUModel'];}else{$ONUModel=NULL;}
	$ONUVendorModel=$ONUVendor.'/'.$ONUModel;
 	echo 'IfId: '.$IfId.'</br>';  
	echo 'IfDescr: '.$IfDescr.'</br>';
	echo 'IfSpeed: '.$IfSpeed.'</br>'; 
	echo 'IfAdminStatus: '.$IfAdminStatus.'</br>'; 
	echo 'IfOperStatus: '.$IfOperStatus.'</br>'; 
	echo 'IfInErrors: '.$IfInErrors.'</br>'; 
	echo 'IfOutErrors: '.$IfOutErrors.'</br>'; 
	$epon=stripos($IfDescr, 'pon');
	$eponslash=stripos($IfDescr, '/');
	$eponcolon=stripos($IfDescr, ':');
	if($epon !== false and $eponslash!== false and $eponcolon !== false){
	echo 'ONU MAC: '.$ONUMAC.'</br>'; 
	echo 'ONURxLevel: '.$ONURxLevel.'</br>'; 
	echo 'ONUTemp: '.$ONUTemp.'</br>'; 
	echo 'ONUDist: '.$ONUDist.'</br>'; 
	echo 'ONUVendor: '.$ONUVendor.'</br>'; 
	echo 'ONUModel: '.$ONUModel.'</br>'; }
	echo '________________________________</br>';

}


  $session->close();

  $time2= date("Y-m-d H:i:s");
   echo 'Start: '.$time1.' End:'.$time2.'</br>';
   ?>
Ссылка на сообщение
Поделиться на других сайтах

Код опроса OLT-a примерно 20 с.:

 

Я тут нервуюся, що в мене довго опитує:

post-18229-0-68431500-1508140452_thumb.jpg

<?php header('Content-type: text/html; charset=utf-8')?>
<?php
session_start();
include_once("db_connect.php");
include_once 'session.php';
include_once("var.php");
?>
<html>
<head>
	<title>PON</title>
	<style>
	.zebraRow {
		background-color: #c0c0c0;
	}
	tr{
		text-align: center;
	}
	</style>
</head>
<body>
<?php
//echo $uri;
//print_r($_GET);
$ip_olt=$_GET['ip'];

function _submit() {
      window.open('','new_win','width=400,height=600,location=no,toolbar=no,menubar=no,status=no,scrollbars=yes,resizable=yes');
  }
  function content_user() {
      window.open('','new_win','width=400,height=600,location=no,toolbar=no,menubar=no,status=no,scrollbars=yes,resizable=yes');
  }
$time1= date("Y-m-d H:i:s");
$uptime=snmp2_get($ip_olt, $ro, "iso.3.6.1.2.1.1.9.1.4.1");


$uptime=str_replace("IF-MIB::ifDescr.", "", $uptime);


$Array_descr = snmp2_real_walk($ip_olt, $ro, "ifDescr");
$old_olt="";
$n="";
$m="";
$m_calc="";
echo "BDCOM - ".$ip_olt. "<br>UpTime - ".$uptime."<br>";
echo "<a href='onu_view.php?&olt=$ip_olt' target='_blank'>На карте</a>";
if(count($Array_descr)>0) {
	
			foreach($Array_descr as $key => $type) {
	
							$key = str_replace("IF-MIB::ifDescr.", "", $key);
							$type = trim(str_replace("STRING: ", "", $type));
							//echo $type . "--".$key."<br>";
							$olt = strtok($type, ":");
							//echo $olt;
//print_r($id_onu);
								if(preg_match("#:#", $type)){
									//print_r($type . "--".$key."\n");
									$active="";
									$opt_level_up = snmp2_get($ip_olt, $ro, "enterprises.3320.101.10.5.1.5.$key");
									//$opt_level_up = snmp2_get($ip_olt, $ro, "1.3.6.1.4.1.3320.9.183.1.1.5.$key");
										//echo $opt_level_up;
									if ($opt_level_up) {
										$opt_level_up = trim(str_replace("INTEGER: ", "", $opt_level_up)/10);
										$mac_onu = snmp2_get($ip_olt, $ro, "enterprises.3320.101.10.4.1.1.$key");
										$mac_onu = str_replace(" ", ":", strtolower(trim(str_replace("Hex-STRING: ", "", $mac_onu))));

										$active = snmp2_get($ip_olt, $ro, "1.3.6.1.4.1.3320.101.10.1.1.26.$key");
										$active = str_replace(" ", ":", strtolower(trim(str_replace("INTEGER: ", "", $active))));

										//$descr = snmp2_get($ip_olt, $ro, "mib-2.31.1.1.1.18.$key");
										//$descr = str_replace(" ", ":", strtolower(trim(str_replace("STRING: ", "_", $descr))));

										$Array_ports="";
										$Array_ports_="";
										$Array_ports__="";
										$Array_ports = snmprealwalk($ip_olt, $ro, "SNMPv2-SMI::enterprises.3320.101.12.1.1.8.$key");
						
											foreach($Array_ports as $key_ => $state) {
												$port = str_replace("SNMPv2-SMI::enterprises.3320.101.12.1.1.8.$key.", "", $key_);
												$Array_state=explode(":", $state);
												$state = trim($Array_state[1]);

												/*if($state == 1 ){ $state="up"; }
												if($state == 2 ){ $state="down"; }
												$Array_ports__[]= $port." : ".$state;*/
											}
										//$Array_olt[$olt][$mac_onu]['ports'] = $Array_ports__[0];
										$Array_olt[$olt][$mac_onu]['key_onu'] = $key;
										$Array_olt[$olt][$mac_onu]['type'] = $type;
										$Array_olt[$olt][$mac_onu]['level_up'] = $opt_level_up;
										$Array_olt[$olt][$mac_onu]['active'] = $active;
										//$Array_olt[$olt][$mac_onu]['descr'] = $descr;
										}
										else {
											$mac_onu = snmp2_get($ip_olt, $ro, "enterprises.3320.101.10.4.1.1.$key");
											$mac_onu = str_replace(" ", ":", strtolower(trim(str_replace("Hex-STRING: ", "", $mac_onu))));
											$Array_olt[$olt][$mac_onu]['key_onu'] = $key;
											$Array_olt[$olt][$mac_onu]['type'] = $type;
											$Array_olt[$olt][$mac_onu]['level_up'] = 0;
											$Array_olt[$olt][$mac_onu]['active'] = 0;
										}
									
									
							}
			}	

			ksort($Array_olt);
			echo "<form action=”onu.php” id=”form1”></form>";

			print("<br><br><center><table border='0' cellpadding='0' cellspacing='1' width='90%'>");
			print("<tr class=head bgcolor=#ffffc0>
			 
			 <td ><strong>Имя ONU</strong></td>
			 <td ><strong>Описание</strong></td>
			 <td ><strong>Mac ONU</strong></td>
			 <td ><strong>Уровень пр., db</strong></td>
			 <td ><strong>GPS</strong></td>
			 <td ><strong>UB</strong></td>
			 <td ><strong>Edit</strong></td>
			 <td ><strong>VIEW</strong></td>
			 <td ><strong>История</strong></td>
			 </tr>");

			foreach($Array_olt as $key => $type)

			{
				
				$olt = $key;
				$ports="";
				//$n="";
				//$m="";
				//$m_calc="";
				//$old_olt="";
					foreach($type as $key1 => $type1)
					{
						$mac_onu = $key1;
						$level_up = $type1['level_up'];
						$type = $type1['type'];
						$active = $type1['active'];
						//$ports = $type1['ports'];
						//$d = $type1['descr'];
						$key_onu = $type1['key_onu'];
						$n++;

						###################################################################################
						$result = mysql_query("SELECT username FROM alldata WHERE maconu='$mac_onu'");
						$myrow = mysql_fetch_assoc($result);
						$username = $myrow['username'];
						###################################################################################
						$query="SELECT descr FROM pon WHERE mac_onu='$mac_onu'";
						$res=mysql_query($query);
						$itog=mysql_fetch_assoc($res);
							
							$d = $itog['descr'];

								if(($olt!=$old_olt)&&($n!=1)) {

								print("<tr class=head bgcolor=#ffffc0><td><font color=$warn>Всего: <b>$m </b>ONU</td>");
								$m=0;
								//echo $msg;
								//$m_calc=0;
								print("<tr height=40><td colspan=5></td></tr>");
								}
								$m++;
								$m_calc++;
									if ($level_up == 0) {
												$colorfont="red";
												$level_up="0 ";
												//$lable="ONU не подключена!";
													    
									}  elseif ($level_up <= -25.5) {

									  //  $lable="Плохой сигнал!!!";
									    $colorfont="blue";

									}
									elseif ($level_up >= -10) {

									  //  $lable="Спасай глаз!!!";
									    $colorfont="black";

									}
									else  {

									    $colorfont="green";
									  //  $lable="Сигнал в пределах нормы!";
									}				
						$cssClass="normalRow";

								if($n % 2 == 0) {
									$cssClass = "zebraRow";
								}
						
						echo "
						<tr class=$cssClass>
						
						<td>$type</td>
						<td>$d</td>";
						if (empty($username)) {
							echo "<td>$mac_onu</td>";
						}
						else {
							echo "<td><form action=reg-edit.php method=\"POST\" target='content'>
												<input  type=\"submit\" name=\"user_edit\" value=\"$username\">
												<br><lable>$mac_onu</lable>

										</form>
										
								</td>";
						}
						####################################################################
						
						####################################################################
						echo "<td><font color=$colorfont><b> ".$level_up." db</b> <br/></td>
						<td nowrap align='left'>
						";
								$query="SELECT lat,levelhystory FROM pon WHERE mac_onu='$mac_onu'";
								$res=mysql_query($query);
								//$count=mysql_num_rows($res);
								//echo $count;
								
								$itog=mysql_fetch_assoc($res);
									$lat = $itog['lat'];
									$levelhystory=$itog['levelhystory'];
										//echo $lat;# code...
			
										if ($lat == 0) {
											echo "<a href='location.php?&olt=$ip_olt&mac=$mac_onu&lat=$lat&descr=$d' target='_blank'><img src='pic/red.png' height=\"50\"";

										} else {
											echo "<img src='pic/green.png' height=\"50\"";
										}
			

							//if(($active==1)||($active==3)){ print("$ports"); }else{}
								switch ($olt) {
									case 'EPON0/1':
										$sfp_port_id=8;# code...
										break;
									case 'EPON0/2':
										$sfp_port_id=9;#
										break;
									case 'EPON0/3':
										$sfp_port_id=10;#
										break;
									case 'EPON0/4':
										$sfp_port_id=11;#
										break;
									default:
										# code...
										break;
								}

								echo 
								"</td>
								<td><a href='unbind_onu.php?mac_onu=$mac_onu&key_onu=$sfp_port_id&ip=$ip_olt' target='_blank'><img src='pic/delete.png' width=\"40\"></a>
								</td>
								<td><a href='edit_onu.php?epon=$olt&epon_onu=$type&mac_onu=$mac_onu&key_onu=$key_onu&descr=$d&ip=$ip_olt&port=$port' target='_blank'><img src='pic/comment-edit-icon.png' width=\"50\">
								</td>
								<td><a href='onu.php?epon=$type&mac_onu=$mac_onu& key_onu=$key_onu&descr=$d&ip=$ip_olt&port=$port' target='_blank'><img src='pic/view.png' width=\"60\"></a>
								</td>
								<td>
								
								 $levelhystory

								</td>
								</tr>";

								$old_olt=$olt;
						#######################################################3
						if ($m>"50"){ 
							$warn="red";
							$msg="<h3>Обратите внимание на порт. Заканчиваются места!!!</h3>";
						} else { 
							$warn="black";
						}
						##########################################################
			
					}

			}
$c="";
$c=$m_calc+$c;

print ($msg);
print("<tr class=head bgcolor=#ffffc0 ><td>Всего: <b> $m </b>ONU</td>");
print("</table></center>");
}
echo "<label class=\"allonu\"><h4>Всего зарегистрировано ".$c. " из 256 возможных!</h4></label>";
mysql_close();
$time2= date("Y-m-d H:i:s");
   echo 'Start: '.$time1.' End:'.$time2.'</br>';
?>

</body>
</html>

Громіздко, але, як міг... 

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

 

од опроса OLT-a примерно 20 с.:

Круто, но насколько я вижу в базу он ниче не собирает....

 

У вас есть все данные, в чем проблема внести в базу?

 

Вот на примере PONcontrol опрос всех OLT-ов:

<?php


$time1= date("Y-m-d H:i:s");
include 'vars.php';
include_once 'function_lib.php';
$extra = 'index.php';



$conn = mysql_connect($mysql_host, $mysql_user, $mysql_pass);
mysql_query("SET NAMES utf8");
mysql_select_db($mysql_db);
$psql = "select * from olts order by ip";
$pretval = mysql_query( $psql, $conn );
if(! $pretval )
{
  die('Could not enter data: ' . mysql_error());
}

  while ($row=mysql_fetch_array($pretval)) {

$sql_ip = $row['ip'];
$ro = $row['ro'];
$ip = long2ip($sql_ip);
include 'ping.php';

if ($ping == 0) {
} else {

$sql_req = "UPDATE olts SET last_act=\"$date\" WHERE ip='$sql_ip'";
$retval_ping = mysql_query( $sql_req, $conn );
if(! $retval_ping )
{
  die('Could not enter data: ' . mysql_error());
}


$table = str_replace (".", "_", $ip);
$equipment_id='';
  echo "</br>SysInfo</br>";
$session = new SNMP(SNMP::VERSION_2C, $ip, $ro);
//$session->valueretrieval = SNMP_VALUE_PLAIN;
  $sys = $session->walk("1.3.6.1.2.1.1", TRUE);
  var_export($sys);
 echo "</br>";


$ifDescr = $session->walk(".1.3.6.1.2.1.2.2.1.2", TRUE);

$ifSpeed = $session->walk(".1.3.6.1.2.1.2.2.1.5", TRUE);

$ifAdminStatus = $session->walk(".1.3.6.1.2.1.2.2.1.7", TRUE);

$ifOperStatus = $session->walk(".1.3.6.1.2.1.2.2.1.8", TRUE);

$ifInErrors = $session->walk(".1.3.6.1.2.1.2.2.1.14", TRUE);

$ifOutErrors = $session->walk(".1.3.6.1.2.1.2.2.1.20", TRUE);

$ONUMAC = $session->walk("1.3.6.1.4.1.3320.101.10.1.1.3", TRUE);

$ONURxLevel = $session->walk("1.3.6.1.4.1.3320.101.10.5.1.5", TRUE);

$ONUTemp = $session->walk("1.3.6.1.4.1.3320.101.10.5.1.2", TRUE);

$ONUDist = $session->walk("1.3.6.1.4.1.3320.101.10.1.1.27", TRUE);

$ONUVendor = $session->walk("1.3.6.1.4.1.3320.101.10.1.1.1", TRUE);

$ONUModel = $session->walk("1.3.6.1.4.1.3320.101.10.1.1.2", TRUE);

/*$session =  new SNMP(SNMP::VERSION_1, $ip, $ro);
$session->oid_increasing_check = FALSE;
$session->oid_output_format = SNMP_OID_OUTPUT_NUMERIC;
$UserMAC = $session->walk("1.3.6.1.4.1.3320.152.1.1.3", TRUE);*/



	foreach ($ifDescr as $key => $value) {
	$iface[$key]['IfId']=$key;	
	$value=explode(' ', $value);
	$value=end($value);
	$value=trim($value);
	$value = str_replace("\"", "", $value);
	$iface[$key]['IfDescr']=$value;
	}
	foreach ($ifSpeed as $key => $value) {
	$value=explode(':', $value);
	$value=end($value);
	$value=trim($value);
	$iface[$key]['IfSpeed']=$value;
	}
	foreach ($ifAdminStatus as $key => $value) {
	$value=explode(':', $value);
	$value=end($value);
	$value=trim($value);
	$iface[$key]['IfAdminStatus']=$value;
	}
	foreach ($ifOperStatus as $key => $value) {
	$value=explode(':', $value);
	$value=end($value);
	$value=trim($value);
	$iface[$key]['IfOperStatus']=$value;
	}
	foreach ($ifInErrors as $key => $value) {
	$value=explode(':', $value);
	$value=end($value);
	$value=trim($value);
	$iface[$key]['IfInErrors']=$value;
	}
	foreach ($ifOutErrors as $key => $value) {
	$value=explode(':', $value);
	$value=end($value);
	$value=trim($value);
	$iface[$key]['IfOutErrors']=$value;
	}
	foreach ($ONUMAC as $key => $value) {
	$value=explode(':', $value);
	$value=end($value);
	$value=trim($value);
	$value = str_replace (" ", ":", $value);
	$iface[$key]['ONUMAC']=$value;
	}
	foreach ($ONURxLevel as $key => $value) {
	$value=explode(':', $value);
	$value=end($value);
	$value=trim($value);
	$iface[$key]['ONURxLevel']=$value;
	}
	foreach ($ONUTemp as $key => $value) {
	$value=explode(':', $value);
	$value=end($value);
	$value=trim($value);
	$value = $value/256;
	$value = round($value, 2);
	$iface[$key]['ONUTemp']=$value;
	}
	foreach ($ONUDist as $key => $value) {
	$value=explode(':', $value);
	$value=end($value);
	$value=trim($value);
	$iface[$key]['ONUDist']=$value;
	}
	foreach ($ONUVendor as $key => $value) {
	$value=explode(':', $value);
	$value=end($value);
	$value=trim($value);
	$value = str_replace("\"", "", $value);
	$iface[$key]['ONUVendor']=$value;
	}
	foreach ($ONUModel as $key => $value) {
	$value=explode(':', $value);
	$value=end($value);
	$value=trim($value);
	$value = str_replace("\"", "", $value);
	$iface[$key]['ONUModel']=$value;
	}

foreach ($iface as $key){
	echo '</br>';
	$date=date("Y-m-d H:i:s");
	$IfId=$equipment_id.'_'.$key['IfId'];
	$IfDescr=$key['IfDescr'];
	$IfSpeed=$key['IfSpeed']; 
	$IfAdminStatus=$key['IfAdminStatus']; 
	$IfOperStatus=$key['IfOperStatus']; 
	$IfInErrors=$key['IfInErrors']; 
	$IfOutErrors=$key['IfOutErrors'];
	if(isset( $key['ONUMAC'])){
	$ONUMAC=$key['ONUMAC'];}else{$ONUMAC=NULL;}
	if(isset( $key['ONURxLevel'])){
	$ONURxLevel=$key['ONURxLevel']/10;}else{$ONURxLevel="Offline";}
	if(isset( $key['ONUTemp'])){
	$ONUTemp=$key['ONUTemp'];}else{$ONUTemp=NULL;}
	if(isset( $key['ONUDist'])){
	$ONUDist=$key['ONUDist'];}else{$ONUDist=NULL;}
	if(isset( $key['ONUVendor'])){
	$ONUVendor=$key['ONUVendor'];}else{$ONUVendor=NULL;}
	if(isset( $key['ONUModel'])){
	$ONUModel=$key['ONUModel'];}else{$ONUModel=NULL;}
	$ONUVendorModel=$ONUVendor.'/'.$ONUModel;
 	echo 'IfId: '.$IfId.'</br>';  
	echo 'IfDescr: '.$IfDescr.'</br>';
	echo 'IfSpeed: '.$IfSpeed.'</br>'; 
	echo 'IfAdminStatus: '.$IfAdminStatus.'</br>'; 
	echo 'IfOperStatus: '.$IfOperStatus.'</br>'; 
	echo 'IfInErrors: '.$IfInErrors.'</br>'; 
	echo 'IfOutErrors: '.$IfOutErrors.'</br>'; 
	$epon=stripos($IfDescr, 'pon');
	$eponslash=stripos($IfDescr, '/');
	$eponcolon=stripos($IfDescr, ':');
	if($epon !== false and $eponslash!== false and $eponcolon !== false){
	echo 'ONU MAC: '.$ONUMAC.'</br>'; 
	echo 'ONURxLevel: '.$ONURxLevel.'</br>'; 
	echo 'ONUTemp: '.$ONUTemp.'</br>'; 
	echo 'ONUDist: '.$ONUDist.'</br>'; 
	echo 'ONUVendor: '.$ONUVendor.'</br>'; 
	echo 'ONUModel: '.$ONUModel.'</br>'; 
	$nameint = NameIntAddZero($IfDescr);
	UpdateOnu($conn, $sql_ip, $date, $nameint, $ONUMAC, $ONURxLevel);}
	echo '________________________________</br>';
	

}
  }}

  $session->close();

  $time2= date("Y-m-d H:i:s");
  echo 'Start: '.$time1.' End:'.$time2.'</br>';
  mysql_close($conn);

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

Дело в том, что мне хватает понконтрола. Не вижу необходимости снимать лишак, типо ошибок на порту, админстатус порта ОНУ, по крайней мере у себя.

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

Дело в том, что мне хватает понконтрола. Не вижу необходимости снимать лишак, типо ошибок на порту, админстатус порта ОНУ, по крайней мере у себя.

 

Ломать не строить....

 

Удалил "лишак", опрос трех ОЛТов (~460 ONU) и внесение в БД всех данных выполняется за 35-40 с.

<?php
$time1= microtime(true);
include 'vars.php';
include_once 'function_lib.php';
$extra = 'index.php';

$conn = mysql_connect($mysql_host, $mysql_user, $mysql_pass);
mysql_query("SET NAMES utf8");
mysql_select_db($mysql_db);
$psql = "select * from olts order by ip";
$pretval = mysql_query( $psql, $conn );
if(! $pretval )
{
  die('Could not enter data: ' . mysql_error());
}

  while ($row=mysql_fetch_array($pretval)) {

$sql_ip = $row['ip'];
$ro = $row['ro'];
$ip = long2ip($sql_ip);
include 'ping.php';

if ($ping == 0) {
} else {

$sql_req = "UPDATE olts SET last_act=\"$date\" WHERE ip='$sql_ip'";
$retval_ping = mysql_query( $sql_req, $conn );
if(! $retval_ping )
{
  die('Could not enter data: ' . mysql_error());
}

$table = str_replace (".", "_", $ip);

$session = new SNMP(SNMP::VERSION_2C, $ip, $ro);

$ifDescr = $session->walk(".1.3.6.1.2.1.2.2.1.2", TRUE);

$ONUMAC = $session->walk("1.3.6.1.4.1.3320.101.10.1.1.3", TRUE);

$ONURxLevel = $session->walk("1.3.6.1.4.1.3320.101.10.5.1.5", TRUE);

unset($iface);

	foreach ($ifDescr as $key => $value) {
	$iface[$key]['IfId']=$key;	
	$value=explode(' ', $value);
	$value=end($value);
	$value=trim($value);
	$value = str_replace("\"", "", $value);
	$iface[$key]['IfDescr']=$value;
	}
	foreach ($ONUMAC as $key => $value) {
	$value=explode(':', $value);
	$value=end($value);
	$value=trim($value);
	$value = str_replace (" ", ":", $value);
	$iface[$key]['ONUMAC']=$value;
	}
	foreach ($ONURxLevel as $key => $value) {
	$value=explode(':', $value);
	$value=end($value);
	$value=trim($value);
	$iface[$key]['ONURxLevel']=$value;
	}

foreach ($iface as $key){
	echo '</br>';
	$date=date("Y-m-d H:i:s");
	if(isset( $key['ONUMAC'])){
	$ONUMAC=$key['ONUMAC'];}else{$ONUMAC=NULL;}
	if(isset( $key['ONURxLevel'])){
	$ONURxLevel=$key['ONURxLevel']/10;}else{$ONURxLevel="Offline";}
 	echo 'IfId: '.$IfId.'</br>';  
	echo 'IfDescr: '.$IfDescr.'</br>';
	$epon=stripos($IfDescr, 'pon');
	$eponslash=stripos($IfDescr, '/');
	$eponcolon=stripos($IfDescr, ':');
	if($epon !== false and $eponslash!== false and $eponcolon !== false){
	echo 'ONU MAC: '.$ONUMAC.'</br>'; 
	echo 'ONURxLevel: '.$ONURxLevel.'</br>'; 
	$nameint = NameIntAddZero($IfDescr);
	UpdateOnu($conn, $sql_ip, $date, $nameint, $ONUMAC, $ONURxLevel);}
	echo '________________________________</br>';
}}}

  $session->close();

  $time2= microtime(true);
	$diff = $time2 - $time1;

echo '</br>Run time:'.$diff.' c</br>';
  mysql_close($conn);
?>
Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

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

Вхід

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

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

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

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

    • Від AlinaQuan
      Hi, it's so great to meet you here. We are a Chinese factory that located in Shenzhen, China. Most of our clients are Operator and ISP.
       
      We have only 3 main product line currently, 
       
      Product Line 1: GPON/EPON/XGPON OLT, and we are the only factory that work XGSPON OLT out in similar level factory. No company has XGSPON OLT, except company like Huawei, ZTE!
       
       
      Product Line 2: GPON/EPON/XGPON ONU WIFI 5 and WIFI 6, we are working on XGSPON ONU. And MDU, 4, 8 ports, no POE and with POE port!
       
       
       
       
      Product Line 3: It's our Switches, we got Enthernet Switch, All-optical Switch,Access Layer,Distribution Layer,Core Layer, we all have. 
       
       
       
       
      And you can also buy OLT from Ukraine local, saving your time, shipping cost !
      Anyway, welcome to contact me for more details! Whatsapp/Viber / Wechat: +8618086327779 !
      Wish you guys have a nice day!
    • Від AlinaQuan
      In the world of fiber optic technology, two terms you might come across are GPON and XGSPON. But what do they mean, and how are they different? Let's dive in and explore these fascinating technologies in simple terms!
       
      What is GPON?
      GPON stands for Gigabit Passive Optical Network. It's a widely used technology for delivering high-speed internet and other services over fiber optic cables. GPON operates by splitting the fiber optic signal into multiple channels, allowing for efficient transmission of data to multiple users simultaneously. It's like having multiple lanes on a highway, ensuring smooth traffic flow even during peak hours.
       
      What is XGSPON?
      XGSPON, on the other hand, stands for 10-Gigabit-capable Passive Optical Network. As the name suggests, XGSPON takes things up a notch by offering even faster speeds than GPON. With XGSPON, data can be transmitted at speeds of up to 10 gigabits per second (Gbps), making it ideal for bandwidth-intensive applications like ultra-high-definition video streaming and virtual reality gaming.
       
      Key Differences:
      Speed: The main difference between GPON and XGSPON is the speed they offer. While GPON typically provides speeds of up to 2.5 Gbps downstream and 1.25 Gbps upstream, XGSPON can deliver speeds of up to 10 Gbps in both directions.
      Bandwidth: With its higher speed capabilities, XGSPON offers greater bandwidth for handling large amounts of data traffic. This makes it well-suited for scenarios where multiple users require ultra-fast internet access simultaneously.
      Compatibility: GPON and XGSPON are not directly compatible with each other. Upgrading from GPON to XGSPON typically requires replacing the optical line terminal (OLT) equipment at the service provider's end, as well as upgrading the customer premises equipment (CPE) such as ONUs or ONTs.
      Conclusion
       
      In summary, GPON and XGSPON are both powerful technologies for delivering high-speed internet over fiber optic networks. While GPON offers impressive speeds suitable for most residential and small business applications, XGSPON takes things to the next level with its blazing-fast speeds and increased bandwidth capacity. Whether you're streaming your favorite shows, gaming online, or running a business, these technologies pave the way for a connected future where speed knows no bounds!

       
      And there you have it – a simple breakdown of the differences between GPON and XGSPON. Keep exploring, keep innovating, and let's continue to ride the wave of fiber optic technology into the future! 🌐✨
       
      Contact Whatsapp / Viber / Wechat +86 18086327779 for more details!
    • Від kotqq
      Продам бу олт huawei ma5800-x2, можно добавить платы на 16 портов, цена 1400$
      так же в наличии есть ma5800-x7

    • Від jack_frost
      Добрый день.
      Столкнулся с проблемой и уже не первый день с ней воюю.
      Как на OLT Huawei MA5680 включить dhcp-snooping?
      Вот примеры команд которыми регестрирую onu:
      EPON
      ont add 1 18 mac-auth E0E8-E6F0-9E9D oam ont-lineprofile-name e567 ont-srvprofile-name e567 ont port native-vlan 1 18 eth 1 vlan 567 service-port vlan 567 epon 0/15/1 ont 18 multi-service user-vlan 567 tag-transform translate GPON
      ont add 0 0 sn-auth 485754436AF153F9 omci ont-lineprofile-name g567 ont-srvprofile-name g567 ont port native-vlan 0 0 eth 1 vlan 567 priority 0 service-port 8 vlan 567 gpon 0/16/0 ont 0 gemport 1 multi-service user-vlan 567 tag-transform translate  
    • Від all_we_crazy
      C300 шассі -
      2 плати живлення
      2 плати управління SCTM. в кожні по 4 аплінк порта є
      GTGH (16 gpon) плати по 550 баксів
      1 плата аплінк додатково HUTQ. 2х 10г, 2х1г SFP порти
      плати GTGH (16 gpon портів). модулі 6+ вихідний сигнал. до -33 чутливість
      — ціна за шассі зі всіма платами, крім GTGH - $1000
      — ціна за плату GTGH 1 штука $550

      є в наявності 7 плат GTGH 
      2шт в ревізії K та 5шт в ревізії G


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