О деактивации форума Eltex

Уважаемые коллеги! В связи с потерей актуальности данного ресурса, нами было принято решение о частичной деактивации форума Eltex. Мы отключили функции регистрации и создания новых тем, а также возможность оставлять сообщения. Форум продолжит работу в "режиме чтения", так как за долгие годы работы здесь накопилось много полезной информации и ответов на часто встречающиеся вопросы.

Мы активно развиваем другие каналы коммуникаций, которые позволяют более оперативно и адресно консультировать наших клиентов. Если у вас возникли вопросы по работе оборудования, вы можете обратиться в техническую поддержку Eltex, воспользовавшись формой обращения на сайте компании или оставить заявку в системе Service Desk. По иным вопросам проконсультируют наши менеджеры коммерческого отдела: eltex@eltex-co.ru.

LTP-8x Автоматическая регистрация NTU

ONT NTE / NTP, OLT LTE / LTP / MA4000-PX
gerien
Сообщения: 14
Зарегистрирован: 16 ноя 2016 19:56
Reputation: 0

LTP-8x Автоматическая регистрация NTU

Сообщение gerien » 16 ноя 2016 20:28

На OLT LTP-8x не реализован механизм автоматической регистрации NTU.
Скрипт висит в кроне, и по SNMP находит новые UNACTIVATED NTU и
затем через TELNET конфигурит канал(порт) NTU.

На вход скрипта бросаем файл с содержанием
MAC - IP - VLAN

A8:F9:4B:8B:65:16 10.100.14.3 142
A8:F9:4B:8B:6A:46 10.100.13.3 162
A8:F9:4B:8B:6D:46 10.100.19.3 152


Код: Выделить всё

#!/usr/bin/perl
                                                                             
# "Большая тройка"
use strict;
use warnings;
use diagnostics;
use Net::SNMP;
use Net::Ping;
use Net::Telnet ();
use Data::Dumper qw(Dumper);


use Switch;
use Text::Iconv;
use DBI;
use utf8;
binmode(STDOUT,':utf8');


my $dbname = "abills";
my $username = "username";
my $password = "pass";
my $dbhost = "10.100.1.40";
my $dbport = "3306";
my $dboptions = "-e";
my $dbtty = "utf8";

my $dbh = DBI->connect("DBI:mysql:dbname=$dbname;host=$dbhost;port=$dbport;options=$dboptions;tty=$dbtty","$username","$password", {mysql_enable_utf8 => 1,PrintError => 0});
my $file = $ARGV[0] or die "Need to get CSV file on the command line\n";

# Что будем оправшивать
my $snmp_host = '10.100.19.3'; # IP или hostname
my $snmp_community = '20142014'; # SNMP Community
my $mac;
my $ip;
my $vlan;
my $port = 0;   
my $p = Net::Ping->new("icmp");
my $gpon = 0;

my $ELTX_num;
my $channel_vlan;

 my  $ltp8xONTConfigSerial = '.1.3.6.1.4.1.35265.1.22.3.4.1.2'; #  ltp8xONTConfigSerial
 my  $ltp8xONTConfigChannel = '.1.3.6.1.4.1.35265.1.22.3.4.1.3'; #  ltp8xONTConfigChannel
 my  $ltp8xONTConfigID = '.1.3.6.1.4.1.35265.1.22.3.4.1.4'; #  ltp8xONTConfigID
 my  $ltp8xONTStateState = '.1.3.6.1.4.1.35265.1.22.3.1.1.5'; #ltp8xONTStateState
 my  $ltp8xONTStateChannel = '.1.3.6.1.4.1.35265.1.22.3.1.1.3'; #ltp8xONTStateChannel
 my  $ltp8xONTStateSerial = '.1.3.6.1.4.1.35265.1.22.3.1.1.2'; #ltp8xONTStateSerial


open(my $data, '<', $file) or die "Could not open '$file' $!\n";
 
while (my $line = <$data>) {
   chomp $line;
   
      my @fields = split " " , $line;
        $mac = $fields[0];
        $ip =  $fields[1];
        $vlan = $fields[2];

        $snmp_host = $ip;

if( $p->ping($snmp_host, 2) )
{
my $query_a = "select name from nas where upper(mac)='$mac'";
 
my $sth = $dbh->prepare($query_a);
$sth->execute; # исполняем запрос

 my $ref_a = $sth->fetchrow_arrayref;
 
 my $snmp_session = Net::SNMP->session(-hostname => $snmp_host,-community => $snmp_community,-version => '2c',-timeout => 7, -retries => 5, -translate => [-octetstring => 0]) or die(print 'Не удалось соединиться!');

# print Dumper(\@result);
print "$ip => $mac => $$ref_a[0]\n";

# channel
  my $key_Channel = $ltp8xONTConfigChannel;
  my $result_Channel = $snmp_session->get_table(-baseoid => $key_Channel) or die('Не удалось выполнить запрос!');
  my @v_i = (0,0,0,0,0,0,0,0);

  while (my ($k0,$v0) = each %{$result_Channel}) {
#   print $v0."/";
  $k0 =~ s/$ltp8xONTConfigChannel//g;

for(my $i = 0; $i < 8; $i++) {
  if ($v0 == $i){
  $v_i[$i]++;
  print "GPON $i ";
  }
}
 
  my $key_Serial = $ltp8xONTConfigSerial.$k0;
  my $result_Serial = $snmp_session->get_request(-varbindlist => [$key_Serial],) or die('Не удалось выполнить запрос!');
while (my ($key,$value) = each %{$result_Serial}) {
#  print "$key = $value \n";
  my $dec_num = unpack('H*', "$value");
  print " = $dec_num = > ";
  $key =~ s/$ltp8xONTConfigSerial//g;
}

# ONT_ID
  my $key_ID = $ltp8xONTConfigID.$k0;
  my $result_ID = $snmp_session->get_request(-varbindlist => [$key_ID],) or die('Не удалось выполнить запрос!');
  while (my ($k1,$v1) = each %{$result_ID}) {
   print $v1."\n";
  }


 }

for(my $i = 0; $i < 8; $i++) {
    print $v_i[$i]."\n";
}
print $gpon."\n";

print "---------------------------\n";


# chennal unactivated
  my $key_Channel_Unactivated = $ltp8xONTStateState;
  my $result_Channel_Unactivated = $snmp_session->get_table(-baseoid => $key_Channel_Unactivated) or die('Не удалось выполнить запрос!');
  my @v_i_u = (0,0,0,0,0,0,0,0);
  while (my ($k2,$v2) = each %{$result_Channel_Unactivated}) {

    if ($v2 == 13){
     $k2 =~ s/$ltp8xONTStateState//g;
     print "Unactivated $k2 => $v2 \n";
   
     my $key_Channel_ = $ltp8xONTStateChannel.$k2;
     my $result_Channel_ = $snmp_session->get_request(-varbindlist => [$key_Channel_],) or die('Не удалось выполнить запрос!');
     while (my ($k3,$v3) = each %{$result_Channel_}) {
      $channel_vlan = $vlan + $v3;
      $gpon = $v3;
      if ($v_i[$gpon]) {$port = $v_i[$gpon]} else {$port = 0};
      print "Unactivated Chennal $k3 => $v3 \n";
    }
     my $key_Channel__ = $ltp8xONTStateSerial.$k2;
     my $result_Channel__ = $snmp_session->get_request(-varbindlist => [$key_Channel__],) or die('Не удалось выполнить запрос!');
     while (my ($k4,$v4) = each %{$result_Channel__}) {
     my $dec_num = unpack('H*', "$v4");
     $dec_num =~s/454c5458//g;
     $ELTX_num =uc('ELTX'.$dec_num);
      print "Unactivated Serial $k4 => $ELTX_num \n";
    }

#--------------------------------- TELNET

# $channel_vlan = $vlan + $v3;
 my $login = 'admin';
 my $pass = 'admin';
# my $gpon = $v3;
# my $port;
 my $t = new Net::Telnet (Timeout => 20, Host => $ip, Errmode=>'return');
 if ( $t )
 {
 my @cmd =("configure terminal",
"interface ont $gpon/$port",
"serial $ELTX_num",
"profile ports NTP-RG-$channel_vlan",
"service 0 profile cross-connect INTERNET_$channel_vlan",
"service 0 profile dba dba-00",
"exit",
"exit",
"commit",
"save");

        $t->waitfor('/login:.*$/');
        $t->print($login);
        $t->waitfor('/Password:.*$/');
        $t->print($pass);
        $t->waitfor('/#.*$/');
foreach my $n (@cmd){
        $t->print($n);
        $t->waitfor('/#.*$/');
        }
        $t->close();

  } else { print "Warning: ".$ip."  telnet not responding\n"; }

   }
  }


$snmp_session->close();
# Закрываем соединение

        }
        else
        {
        print "Warning: ".$snmp_host." appears to be down or icmp packets are blocked by their servern\n";
}




}                                                                                         
$dbh->disconnect();

Александр Д
Сообщения: 1109
Зарегистрирован: 14 июн 2011 10:11
Reputation: 2
Откуда: Элтекс
Контактная информация:

Re: LTP-8x Автоматическая регистрация NTU

Сообщение Александр Д » 22 ноя 2016 15:30

У вас с этим проблема? или Вы просто поделились своими наработками?
Александр Диркс / Элтекс / Сервисный центр ШПД /

gerien
Сообщения: 14
Зарегистрирован: 16 ноя 2016 19:56
Reputation: 0

Re: LTP-8x Автоматическая регистрация NTU

Сообщение gerien » 24 ноя 2016 15:03

Да поделился.
Вы мне ответили ,что данный механизм не реализован, пришлось придумывать свой.

Harun
Сообщения: 41
Зарегистрирован: 14 май 2014 11:38
Reputation: 0

Re: LTP-8x Автоматическая регистрация NTU

Сообщение Harun » 14 дек 2016 02:58

А почему бы не реализовать radius клиента для регистрации терминалов (как на LTE-8X)? Не пришлось бы городить костыли.

gerien
Сообщения: 14
Зарегистрирован: 16 ноя 2016 19:56
Reputation: 0

Re: LTP-8x Автоматическая регистрация NTU

Сообщение gerien » 14 дек 2016 20:07

Необходимо реализовать механизм привязки оборудования NTU-1 и LTP-8x, а это можно реализовать только используя логику LTP, а данная логика не реализована на LTP (на BDCOM реализована) - поэтому огород.
1.Надо найти новое оборудование (по SNMP) .
2.Надо навесить профайлы (по telnet).

Harun
Сообщения: 41
Зарегистрирован: 14 май 2014 11:38
Reputation: 0

Re: LTP-8x Автоматическая регистрация NTU

Сообщение Harun » 15 дек 2016 00:31

Это понятно, вопрос был к разработчикам.


Вернуться в «Оборудование PON»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 105 гостей