Перейти до

Автоматический ребут 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
Ссылка на сообщение
Поделиться на других сайтах

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

 

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

 

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

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

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

 

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

 

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

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

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

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

 

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

 

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

 

Когда падает чип , 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
Ссылка на сообщение
Поделиться на других сайтах

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

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

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


 

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

 

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

 

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

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

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

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

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

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

 

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

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

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

 

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

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

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

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

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

 

Когда падает чип , 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 користувачів

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

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

    • Від 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 версии.
      Спасибо.
    • Від Prodazha
      Термінова продажа онушок Foxgate 1001mz.
      нові .Гарантія.
      кількість 360 шт
      ціна 299 грн за штуку 
       
    • Від ГрозаИнтернета
      Продам новый OLT C-Data.
      4 ПОН порта, 2 блока питания.
      Покупал под проект, проект завалили.
      Цена 11 000 грн.


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