Перейти до

Автоматический ребут BDCOM P3310B.


pavlabor

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

Данный скрипт ребутит голову BDCOM P3310B, через телнет .

Можно писать мониторинг и ребутить голову по событию, например отваливание фабрики коммутации GPON.

#! /usr/local/bin/php
<?php
$username = "admin"; # Поставить свой логин головы
$password = "admin"; # Поставить свой пароль головы
$ip = "192.168.0.1"; # Поставить свой IP головы
$con = pfsockopen($ip, 23, $errno, $errstr, 10);
$login = $username."\r\n";
    fwrite($con, $login); # Логин
    $pass = $password."\r\n";
    fwrite($con, $pass);  # Пароль
    $command = "enable\r\n";  # Поднимаем права
    sleep(1);
    fwrite($con, $command);
    sleep(1);
    fwrite($con,"\r\n");
    sleep(2);
    fwrite($con, "reboot\r\n"); # Команда - reboot
    sleep(2);
    fwrite($con, "y\r\n"); # Подтверждение - y
sleep(2);
$out = fread($con, 16536);
$out = end(explode(' -----', $out));
$arr_out = explode("\n", $out);
while (trim(array_pop($arr_out)) == "--More--") {
 fwrite($con, chr(32));
     sleep(2);
     $arr_tmp = explode("\r\n", fread($con, 16536));
     $arr_out = array_merge($arr_out,$arr_tmp);
     }
fclose($con);
?>

Благодарности dan_aspire, Kycherr, натыкайте им плюсов в репу.

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

ребутнуть - не проблема.

 

по каким признакам автоматически можно узнать, что отсох пон чип (а не, к примеру, оптику рубанули)? у кого есть на стенде?

 

у нас - пока головы не таращило, но подпереть бы костыликом не помешало на всякий.

Ссылка на сообщение
Поделиться на других сайтах
  В 23.11.2015 в 14:04, NiTr0 сказав:

ребутнуть - не проблема.

 

по каким признакам автоматически можно узнать, что отсох пон чип (а не, к примеру, оптику рубанули)? у кого есть на стенде?

 

у нас - пока головы не таращило, но подпереть бы костыликом не помешало на всякий.

присоединяюсь, у меня периодически отваливается, могу протестить, только тоже интересует по каким признакам скрипт знает что чип отвалился?

Відредаговано revomix
Ссылка на сообщение
Поделиться на других сайтах
  В 23.11.2015 в 14:04, NiTr0 сказав:

ребутнуть - не проблема.

 

по каким признакам автоматически можно узнать, что отсох пон чип (а не, к примеру, оптику рубанули)? у кого есть на стенде?

 

у нас - пока головы не таращило, но подпереть бы костыликом не помешало на всяки

 

Когда падает чип , sh int epon выдает ошибку а не состояние интерфейса

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

sh int epon0/1
^
Parameter invalid

 

вместо :

 

 

sh int epon0/1
EPON0/1 is administratively down, line protocol is down
Ifindex is 8, unique port number is 7
Hardware is GigaEthernet-PON, address is fcfa.f999.1cdc (bia fcfa.f999.1cdc)
MTU 1500 bytes, BW 100000 kbit, DLY 2000 usec
Encapsulation ARPA
Full-duplex, 1000Mb/s
flow-control off
5 minutes input rate 0 bits/sec, 0 packets/sec
5 minutes output rate 0 bits/sec, 0 packets/sec
Received 0 packets, 0 bytes
0 broadcasts, 0 multicasts
0 discard, 0 error, 0 PAUSE
0 align, 0 FCS, 0 symbol
0 carriersense
Transmited 0 packets, 0 bytes
0 broadcasts, 0 multicasts
0 discard, 0 error, 0 PAUSE
0 sqettest, 0 deferred
0 single, 0 multiple, 0 excessive, 0 late

Відредаговано Ajar
Ссылка на сообщение
Поделиться на других сайтах
Опубліковано: (відредаговано)

Пингуем голову, если голова ответила,

мониторим три маркера, желательно по разным направлениям

если первый маркер ответил - отбой, нет,

проверянем второй, да - отбой, нет,

проверяем третий, да - отбой, нет,

Считываем количество онух на наименее нагруженной поне, EPON0/1, считалось - отбой, нет,

ребутим голову и делаем запись в логе, можно письмо админу отправлять.

 

В кроне

*/1   *   *   *   *   root   /путь к скрипту/reboot.php > /dev/null 2>&1

 

сам скрипт - reboot.php

перед запуском, рскоментарьте секцию тест, погоняйте, отчеты можно получить раскоментарив соответствующие строки

#! /usr/local/bin/php
<?php
# Скрипт перегружает голову, в результате неудачного пинггования трех контрольных узлов и опроса головы.
$username = "xxxx";
$password = "xxxx";
$ipPon = "172.16.0.x";
$ipTest1 = "172.16.x.23";  # Сливовая-Виноградная
$ipTest2 = "172.16.x.135"; # Лысого-Кучерявого
$ipTest3 = "172.16.x.20";  # ул.-пер. Грибоедова
$arr_count = 30; # на модуле EPON0/1, должно висеть не менее 5 онух, если меньше скорректируйте по отчету print_r($arr_out);
# test, раскоментарить, в течении минуты, в кроне должен быть отчет о времениперегрузки головы,
# если все окей, закоментировать обратно
#$ipTest1 = "172.16.118.10"; #  23 Котляревского-Лохвицкая
#$ipTest2 = "172.16.118.10"; # 135 Лысенка-Островского
#$ipTest3 = "172.16.118.10"; #  20 ул.-пер. Чайковского
#$arr_count = 300;
$reboot = 1;

$unix_nmap = "ping -t 1 -c 1 -s 16 ".$ipPon." | grep from";
unset($scr_count);
$scr_count = explode(" ",`$unix_nmap`);
#print_r($scr_count);
if ($scr_count[3]) {
$unix_nmap = "ping -t 1 -c 1 -s 16 ".$ipTest1." | grep from";
#echo $unix_nmap;
unset($scr_count);
#echo `$unix_nmap`;
$scr_count = explode(" ",`$unix_nmap`);
#print_r($scr_count);
#echo sizeof($scr_count)."\r\n";
if ($scr_count[3]!=$ipTest1.":") {
$unix_nmap = "ping -t 1 -c 1 -s 16 ".$ipTest2." | grep from";
#echo $unix_nmap;
unset($scr_count);
#echo `$unix_nmap`;
$scr_count = explode(" ",`$unix_nmap`);
#print_r($scr_count);
#echo sizeof($scr_count)."\r\n";
 if ($scr_count[3]!=$ipTest2.":") {
 $unix_nmap = "ping -t 1 -c 1 -s 16 ".$ipTest3." | grep from";
#echo $unix_nmap;
 unset($scr_count);
#echo `$unix_nmap`;
 $scr_count = explode(" ",`$unix_nmap`);
# print_r($scr_count);
# echo sizeof($scr_count)."\r\n";
  if ($scr_count[3]!=$ipTest3.":") {
   $con = pfsockopen($ipPon, 23, $errno, $errstr, 10);
   $login = $username."\r\n";
    fwrite($con, $login);
    $pass = $password."\r\n";
    fwrite($con, $pass);
    $command = "enable\r\n";
    sleep(1);
    fwrite($con, $command);
    sleep(1);
    fwrite($con,"\r\n");
    sleep(2);
    fwrite($con, "show running-config interface EPON0/1\r\n"); # Контрольный отчет с модуля пон, как контроль что пон работает.
#    fwrite($con, "show running-config interface epon0/1:34\r\n");
    sleep(2);
    $out = fread($con, 16536);
    $out = end(explode(' -----', $out));
    $arr_out = explode("\n", $out);
    while (trim(array_pop($arr_out)) == "--More--") {
     fwrite($con, chr(32));
     sleep(2);
     $arr_tmp = explode("\r\n", fread($con, 16536));
     $arr_out = array_merge($arr_out,$arr_tmp);
    }
fclose($con);
#print_r($arr_out);
if (sizeof($arr_out)>$arr_count) $reboot = 0;
  } else $reboot = 0;
 } else $reboot = 0;
} else $reboot = 0;
#echo $reboot."\r\n";

if ($reboot) {
 $con = pfsockopen($ipPon, 23, $errno, $errstr, 10);
 $login = $username."\r\n";
    fwrite($con, $login);
    $pass = $password."\r\n";
    fwrite($con, $pass);
    $command = "enable\r\n";
    sleep(1);
    fwrite($con, $command);
    sleep(1);
    fwrite($con,"\r\n");
    sleep(2);
    fwrite($con, "reboot\r\n");
    sleep(2);
    fwrite($con, "y\r\n");
 fclose($con);

  $foCD=fopen("/var/log/rebootPon.log","a+");
   fwrite($foCD, date("y.m.d H:i:s")."\treboot\n");
  fclose($foCD);
 }
}
?>

Должно работать под любой осью.

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

 

 

  В 23.11.2015 в 15:36, Ajar сказав:
Когда падает чип , sh int epon выдает ошибку а не состояние интерфейса

 

а по снмп что в интерфейсах при этом?

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

sleep в конструкции не радует, всё таки связка expect-a лучше должна отрабатывать по идее, и если у железки CPU загружен - она может отвечать дольше чем секунду.

правда expect под пхп идет отдельными пакетами PECL.

ИМХО лучше бы вышло через консольный expect или perl/python


  В 23.11.2015 в 18:09, NiTr0 сказав:

 

  В 23.11.2015 в 15:36, Ajar сказав:
Когда падает чип , sh int epon выдает ошибку а не состояние интерфейса

 

а по снмп что в интерфейсах при этом?

 

кстати хорошее замечание, может достаточно распарсить IfDescr какой-нить

Ссылка на сообщение
Поделиться на других сайтах
  В 23.11.2015 в 22:31, Ajar сказав:

я бы смтптрапом ловил , тогда ребут головы будет мгновенный. Настроил голову , жду ... пока скриптом лью все в файл

помоему там не происходит события linkdown, там просто загадочным образом они ЕПОН порты исчезают из системы до ребута

но если таки происходит - будете спасителем человечества  бдкомо-водов :D

Відредаговано l1ght
Ссылка на сообщение
Поделиться на других сайтах
  В 23.11.2015 в 23:00, l1ght сказав:

 

  В 23.11.2015 в 22:31, Ajar сказав:

я бы смтптрапом ловил , тогда ребут головы будет мгновенный. Настроил голову , жду ... пока скриптом лью все в файл

помоему там не происходит события linkdown, там просто загадочным образом они ЕПОН порты исчезают из системы до ребута

но если таки происходит - будете спасителем человечества  бдкомо-водов :D

 

точно , просто  пропадают интерфейсы epon

Ссылка на сообщение
Поделиться на других сайтах
Опубліковано: (відредаговано)
  В 23.11.2015 в 18:48, l1ght сказав:

sleep в конструкции не радует, всё таки связка expect-a лучше должна отрабатывать по идее, и если у железки CPU загружен - она может отвечать дольше чем секунду.

правда expect под пхп идет отдельными пакетами PECL.

ИМХО лучше бы вышло через консольный expect или perl/python

  В 23.11.2015 в 18:09, NiTr0 сказав:

 

  В 23.11.2015 в 15:36, Ajar сказав:
Когда падает чип , sh int epon выдает ошибку а не состояние интерфейса

 

а по снмп что в интерфейсах при этом?

 

кстати хорошее замечание, может достаточно распарсить IfDescr какой-нить

 

С IfDescr, безусловно быстрее, тогда код получим такой вид,

если OID для ребута ОЛТа заработает, можно вообще обойтись средствами php.

#! /usr/local/bin/php
<?php
# Скрипт перегружает голову, в результате неудачного пинггования трех контрольных узлов и опроса головы.
$username = "xxxx";
$password = "xxxx";
$ipPon = "172.16.0.x";
$ipTest1 = "172.16.x.23";  # Сливовая-Виноградная
$ipTest2 = "172.16.x.135"; # Лысого-Кучерявого
$ipTest3 = "172.16.x.20";  # ул.-пер. Грибоедова
$arr_count = 30; # на модуле EPON0/1, должно висеть не менее 5 онух, если меньше скорректируйте по отчету print_r($arr_out);
# test, раскоментарить, в течении минуты, в кроне должен быть отчет о времениперегрузки головы,
# если все окей, закоментировать обратно
#$ipTest1 = "172.16.118.10"; #  23 Котляревского-Лохвицкая
#$ipTest2 = "172.16.118.10"; # 135 Лысенка-Островского
#$ipTest3 = "172.16.118.10"; #  20 ул.-пер. Чайковского
#$arr_count = 300;
$reboot = 1;

$unix_nmap = "ping -t 1 -c 1 -s 16 ".$ipPon." | grep from";
unset($scr_count);
$scr_count = explode(" ",`$unix_nmap`);
#print_r($scr_count);
if ($scr_count[3]) {
$unix_nmap = "ping -t 1 -c 1 -s 16 ".$ipTest1." | grep from";
#echo $unix_nmap;
unset($scr_count);
#echo `$unix_nmap`;
$scr_count = explode(" ",`$unix_nmap`);
#print_r($scr_count);
#echo sizeof($scr_count)."\r\n";
if ($scr_count[3]!=$ipTest1.":") {
$unix_nmap = "ping -t 1 -c 1 -s 16 ".$ipTest2." | grep from";
#echo $unix_nmap;
unset($scr_count);
#echo `$unix_nmap`;
$scr_count = explode(" ",`$unix_nmap`);
#print_r($scr_count);
#echo sizeof($scr_count)."\r\n";
 if ($scr_count[3]!=$ipTest2.":") {
 $unix_nmap = "ping -t 1 -c 1 -s 16 ".$ipTest3." | grep from";
#echo $unix_nmap;
 unset($scr_count);
#echo `$unix_nmap`;
 $scr_count = explode(" ",`$unix_nmap`);
# print_r($scr_count);
# echo sizeof($scr_count)."\r\n";
  if ($scr_count[3]!=$ipTest3.":") {
/*   $con = pfsockopen($ipPon, 23, $errno, $errstr, 10);
   $login = $username."\r\n";
    fwrite($con, $login);
    $pass = $password."\r\n";
    fwrite($con, $pass);
    $command = "enable\r\n";
    sleep(1);
    fwrite($con, $command);
    sleep(1);
    fwrite($con,"\r\n");
    sleep(2);
    fwrite($con, "show running-config interface EPON0/1\r\n"); # Контрольный отчет с модуля пон, как контроль что пон работает.
#    fwrite($con, "show running-config interface epon0/1:34\r\n");
    sleep(2);
    $out = fread($con, 16536);
    $out = end(explode(' -----', $out));
    $arr_out = explode("\n", $out);
    while (trim(array_pop($arr_out)) == "--More--") {
     fwrite($con, chr(32));
     sleep(2);
     $arr_tmp = explode("\r\n", fread($con, 16536));
     $arr_out = array_merge($arr_out,$arr_tmp);
    }
fclose($con);
#print_r($arr_out);
if (sizeof($arr_out)>$arr_count) $reboot = 0;*/

$object_id = "ifDescr";
$community = "public";
$arr_out = snmpwalk($ipPon, $community, $object_id);
#print_r($arr_out);
if (sizeof($arr_out)>15) $reboot = 0; # Параметр 15, учитывает наличие не менее пяти ОНУ-х на голове, если больше то нечего, если меньше, параметр нужно скорректировать!
  } else $reboot = 0;
 } else $reboot = 0;
} else $reboot = 0;
#echo $reboot."\r\n";

if ($reboot) {
# OID для ребута ОЛТа, не курицца, если сработает, то скрипт можно подправить так
/* $con = pfsockopen($ipPon, 23, $errno, $errstr, 10);
 $login = $username."\r\n";
    fwrite($con, $login);
    $pass = $password."\r\n";
    fwrite($con, $pass);
    $command = "enable\r\n";
    sleep(1);
    fwrite($con, $command);
    sleep(1);
    fwrite($con,"\r\n");
    sleep(2);
    fwrite($con, "reboot\r\n");
    sleep(2);
    fwrite($con, "y\r\n");
 fclose($con); */
$community = "public";
$object_id = "1.3.6.1.4.1.3320.9.184.7";
snmpset($ip, $community, $object_id,'i',0);

  $foCD=fopen("/var/log/rebootPon.log","a+");
   fwrite($foCD, date("y.m.d H:i:s")."\treboot\n");
  fclose($foCD);
 }
}
?>
Відредаговано pavlabor
Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

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

Вхід

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

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

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

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

    • Від Sunvas
      С начала года наблюдаю как в Николаев приходят новые провайдеры и активно строят свои сети на основе технологии GPON. Отмечу, что речь именно о GPON G.984 (не 10G-PON или NG-PON2). Объясните, пожалуйста:
      Чем обусловлен выбор именно этой устаревшей технологии? Есть ли преимущества для абонентов кроме сомнительной работы при блэкаутах? Как абонентам обеспечивается гигабит, если пропускная способность технологии в 2.4 Gbit/s шарится между <128 абонентами?
    • Від LazukinIvan
      🔹 Продається SFP-модуль GPON OLT C+++ HSGQ-C+++ | 8dBm | 20 км | SC 🔹
      💰 Ціна: 1000 грн
      📦 Опт і безготівковий розрахунок — можливі!
      📩 Для зв’язку — пишіть у особисті повідомлення.
      🧪 Можливе надання модуля на тест за особистою домовленістю.
      Пропонуємо надійний GPON OLT SFP-модуль HSGQ-C+++, що забезпечує стабільну передачу даних на відстань до 20 км. Ідеально підходить для впровадження в мережі GPON будь-якого масштабу.
      🔍 Основні характеристики:
      Модель: HSGQ-C+++
      Тип: GPON OLT SFP C+++
      Швидкість передачі: 1.25 Gbps / 1.25 Gbps
      Довжина хвиль: TX – 1490 нм, RX – 1310 нм
      Потужність передавача: 8 dBm
      Чутливість приймача: ≤ -32 dBm
      Дальність дії: до 20 км
      Конектор: SC
      Живлення: 3.3V
      Сумісність: Huawei, ZTE, BDCOM, FiberHome та інші
      💡 Переваги:
      DDM-моніторинг у реальному часі
      Вбудований WDM-фільтр для стабільної роботи
      Можливість гарячої заміни (Hot-Pluggable)
      Підтримка стандарту ITU-T G.984.2 
      Сумісність з провідними GPON-брендами
      🔧 Ідеальне рішення для мереж FTTH, FTTB, FTTP.
      📩 Пишіть у приват — домовимося про деталі, умови опту та тестування.



       
       
    • Від stass
      Проблеми з сигналом у GPON-мережах та несподіване рішення
      Маючи велику GPON-мережу на обладнанні BDCOM, ми неодноразово стикалися з проблемами якості сигналу, що призводило до флапів ONU-терміналів та скарг від клієнтів. Особливо це стосувалося зворотного сигналу (Rx), який нерідко виявлявся нестабільним, викликаючи втрати з'єднання та погіршення загальної якості зв'язку.
      Як ми намагалися вирішити проблему
      Перше, що ми зробили, — перевірили та замінили сплітери, намагалися вирівнювати оптичну лінію, мінімізували зайві з'єднання та переглядали всі потенційно слабкі місця в мережі. Але навіть після цих заходів проблема повністю не зникала, а лише трохи зменшувалася.
      Несподіване рішення: зміна виробника SFP-модулів
      Ми використовували BDCOM GPON OLT-GSFP-C+++, і саме з цими модулями виникали проблеми зі стабільністю сигналу. До цього ми також випробовували модулі інших виробників, але їхня якість сигналу та стабільність не відповідали нашим очікуванням. Тому вирішили випробувати інший підхід і замінили їх на GPON OLT SFP HSGQ-C+++ (1.25G 1490/1310nm 8dBm 20 км SC).
      Результати нас вразили:
      Прямий сигнал (Tx) зріс на 1-2 dB. Зворотний сигнал (Rx) покращився на 4-6 dB. Флапи ONU-терміналів повністю зникли, а скарги від клієнтів зменшилися до мінімуму. Ціна цих модулів виявилася майже на 50% нижчою від тих, що ми використовували раніше. Висока сумісність із різними брендами OLT, що спрощує інтеграцію в мережу.            Фотографії з порівнянням зворотного сигналу до і після заміни SFP в OLT
       
          GPON OLT SFP HSGQ-C+++ (1.25G 1490/1310nm 7dBm 20 км SC)                                                                                                                                                                                                       

       
          BDCOM GPON OLT-GSFP-C+++
       

       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
      Широкий вибір потужностей: у цього виробника є модулі 7, 8, 9, 12 dB, що дозволяє інтегрувати їх у будь-яку мережу та налаштувати оптимальний рівень сигналу.
      Оптимальне співвідношення ціни та якості, що робить ці модулі вигідним рішенням для операторів зв’язку.
      Зараз ми перевели вже половину мережі на ці модулі й спостерігаємо значне покращення стабільності роботи GPON-мережі.
      Використання ONU-терміналів і ONU-Stick цього виробника
      Після успішного тестування SFP-модулів ми також почали використовувати ONU-термінали та ONU-Stick від цього ж виробника. Вони показують хорошу сумісність з нашим обладнанням та стабільну роботу.
      Також ці модулі можна придбати на AliExpress,   (https://www.aliexpress.com/item/1005007135390802.html?spm=) що розширює можливості їхнього постачання та дає додатковий вибір для операторів зв’язку. 
      Ми закуповуємо ці модулі вже в Україні по оптовим цінам. Якщо потрібно, можу надати контакт постачальника, з яким працюємо.
      Висновки
      Якщо у вас в GPON-мережі спостерігаються проблеми з сигналом, раджу звернути увагу на якість SFP-модулів. У нашому випадку заміна модулів на GPON OLT SFP HSGQ-C+++ дала значний приріст продуктивності та стабільності мережі, при цьому зменшивши витрати.
      Купували їх в Україні. Якщо у когось були подібні проблеми або є питання, пишіть у коментарях – будемо раді обговорити!
    • Від LIKO
      Продам нові XPON ONU EchoLife YT8310M з гарантією!!!
      Сумісні з усіма основними OLT C-Data, BDCom, Huawei, ZTE.
      В комплект входить ONU + БЖ 12В 1А
      370 грн/шт
      На кількості ціна оговорюється окремо.










      XPON 1GE ONU user manual (1).pdf
    • Від www.хомнет.укр
      Добрый время.
      Если есть - поделитесь шаблоном для olt v-sol epon 4,8,16 ports Zabbix 6 версии.
      Спасибо.
×
×
  • Створити нове...