Перейти до

Мониторинг 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 користувачів

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

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

    • Від 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

    • Від Inna13
      Наша компанія має стаж роботи понад 15 років. У нас є дві форми оплати з ПДВ та ФОП, гарантія на товар. Найкращі ціни. В наявності і під замовлення. Picotel, Ubiquiti, BDCOM, C-DATA, Picotel, RCI та інші
    • Від Dolik
      Після переходу на GPON вивільнились кілька OLT на 4 порти та на 8.
      Всі голови укомплектовані UPS на 12в від Proline

    • Від dell
      Продам корзины БУ MA5680Т ETSI. VERSION : MA5600V800R018C00. Конфигурация: Шасси, 1*PRTG, 1*SCUN.
      32т.грн. НДС. Остальное в ЛС.


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