Перейти до

Pon Monitor - система мониторинга PON


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

Нет,я разобрался, перезалил файл где указываются базы и все пошло

но немного не привычно после понконтроля , залить бы базы ону

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

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

Вот решил выдать, кому интересно, собстветнную систему мониторинга PON сети - Pon Monitor. Сделана по аналогии с Poncontrol, но делалась по потребностям инженеров и монтажников.   Возмо

Вот Pon Monitor под BDCOM GP3600-16 Берите кому нужно. Переделка не профессиональная, поэтому берите как есть Pon Monitor.rar

проект живой. Продвигается медленно, так как нет на него пока времени

Posted Images

  • 4 months later...

Питання до розробника, будь ласка, будь ласка, додайте будь-ласка відображення PVID, коли вибираєш дерево відірвається список ону, так що б подивитися влан абонв потрібно обтурювати кожну.

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

А если таблице pm_onu_pwr_history, столбцу pwr поставить тип данных float, то в истории сигналов будем видить не приблизительное значение типа "-26", а "-26.5". Также уйдет ошибка  UPDATE pm_onu_pwr_history SET stoptime=NOW() WHERE Id=50708; - Out of range value for column 'pwr' at row 1

Так как некоторые ону отдают не корректные данные сигнала, которые выходят за рейнж decimala, я его не стал редактировать, а сразу флоат поставил.

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

Если при нажатии кнопки  "FDB таблица" пишет что олт офлайн. Значит у вас уже олт с новой прошивой, там другой oid.

Можно не заморачиваться с oid и переключится на телнет метод в файлике vars.php

Но нужно еще поправить синтаксис  забора мака с олта, он немного не верный.

Идем в папку scripts и открываем файл  get_pon_FDB.php

Здесь находим строку

fwrite($con, "show mac a int $onu \r\n");

И меняем ее на

fwrite($con, "show mac address-table int $onu \r\n");

 

Сокращение это хорошо, но на "а" олт нам подсунит аж 3 команды на выбор, и тут скрипт уткнется.

 

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

Доброго дня. Встановив систему. При опитуванні check_onu.php всіх олтів, не записує в базу історію сигналу. При опитуванні кожного по черзі пише історію, але знову таки не всім

Ссылка на сообщение
Поделиться на других сайтах
годину тому, Tarik89 сказав:

Доброго дня. Встановив систему. При опитуванні check_onu.php всіх олтів, не записує в базу історію сигналу. При опитуванні кожного по черзі пише історію, але знову таки не всім

Перевірте, що в логах - на якому місці проблема з опитуванням, чи які помилки при запису в базу.

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

[Wed Jun 07 18:21:52.604592 2023] [php7:warn] [pid 5035] [client **.**.67.27:58899] PHP Warning: SNMP::get(): Error in packet at 'iso.3.6.1.4.1.3320.101.10.5.1.5.106': No Such Instance currently exists at this OID in /var/www/html/scripts/check_onu.php on line 149 [Wed Jun 07 18:21:52.714246 2023] [php7:warn] [pid 5035] [client **.**.67.27:58899] PHP Warning: SNMP::get(): Error in packet at 'iso.3.6.1.4.1.3320.101.10.5.1.5.111': No Such Instance currently exists at this OID in /var/www/html/scripts/check_onu.php on line 149
 

12 10.132.64.35 18:21:52 mac:16 18:21:52,  names:37 18:21:52,  powers:14 18:21:52
UPDATE pm_olt SET status=1, last_act='2023-06-07 18:21:52' WHERE Id=12;
UPDATE pm_onu SET present = 0 WHERE olt = 12;
INSERT INTO pm_onu (mac, olt, onu_name, present, status, pwr, last_act, order_id) VALUES ('00:08:36:01:57:98', 12, 'EPON0/3:1', 1, 1, '-19,1', '2023-06-07 18:21:52', 3001) ON DUPLICATE KEY UPDATE olt=12, onu_name='EPON0/3:1', present=1, status=1, pwr='-19,1', last_act='2023-06-07 18:21:52', order_id=3001;
INSERT INTO pm_onu (mac, olt, onu_name, present, status, pwr, last_act, order_id) VALUES ('E0:E8:E6:B4:FB:87', 12, 'EPON0/8:1', 1, 1, '-24,5', '2023-06-07 18:21:52', 8001) ON DUPLICATE KEY UPDATE olt=12, onu_name='EPON0/8:1', present=1, status=1, pwr='-24,5', last_act='2023-06-07 18:21:52', order_id=8001;
INSERT INTO pm_onu (mac, olt, onu_name, present, status, pwr, last_act, order_id) VALUES ('E0:E8:E6:3E:4C:05', 12, 'EPON0/5:1', 1, 1, '-6,5', '2023-06-07 18:21:52', 5001) ON DUPLICATE KEY UPDATE olt=12, onu_name='EPON0/5:1', present=1, status=1, pwr='-6,5', last_act='2023-06-07 18:21:52', order_id=5001;
INSERT INTO pm_onu (mac, olt, onu_name, present, status, pwr, last_act, order_id) VALUES ('B0:7C:06:12:3E:4A', 12, 'EPON0/7:1', 1, 1, '-12', '2023-06-07 18:21:52', 7001) ON DUPLICATE KEY UPDATE olt=12, onu_name='EPON0/7:1', present=1, status=1, pwr='-12', last_act='2023-06-07 18:21:52', order_id=7001;
INSERT INTO pm_onu (mac, olt, onu_name, present, status, pwr, last_act, order_id) VALUES ('E0:E8:E6:F0:38:77', 12, 'EPON0/7:2', 1, 1, '-5,9', '2023-06-07 18:21:52', 7002) ON DUPLICATE KEY UPDATE olt=12, onu_name='EPON0/7:2', present=1, status=1, pwr='-5,9', last_act='2023-06-07 18:21:52', order_id=7002;
INSERT INTO pm_onu (mac, olt, onu_name, present, status, pwr, last_act, order_id) VALUES ('70:A5:6A:01:3F:F0', 12, 'EPON0/6:1', 1, 1, '-6', '2023-06-07 18:21:52', 6001) ON DUPLICATE KEY UPDATE olt=12, onu_name='EPON0/6:1', present=1, status=1, pwr='-6', last_act='2023-06-07 18:21:52', order_id=6001;
INSERT INTO pm_onu (mac, olt, onu_name, present, status, pwr, last_act, order_id) VALUES ('E0:E8:E6:15:BB:3A', 12, 'EPON0/3:2', 1, 1, '-14', '2023-06-07 18:21:52', 3002) ON DUPLICATE KEY UPDATE olt=12, onu_name='EPON0/3:2', present=1, status=1, pwr='-14', last_act='2023-06-07 18:21:52', order_id=3002;
INSERT INTO pm_onu (mac, olt, onu_name, present, status, pwr, last_act, order_id) VALUES ('E0:E8:E6:B4:FE:FD', 12, 'EPON0/8:2', 1, 1, '-31,5', '2023-06-07 18:21:52', 8002) ON DUPLICATE KEY UPDATE olt=12, onu_name='EPON0/8:2', present=1, status=1, pwr='-31,5', last_act='2023-06-07 18:21:52', order_id=8002;
INSERT INTO pm_onu (mac, olt, onu_name, present, status, pwr, last_act, order_id) VALUES ('E0:E8:E6:B4:FF:5F', 12, 'EPON0/6:2', 1, 1, '-7,4', '2023-06-07 18:21:52', 6002) ON DUPLICATE KEY UPDATE olt=12, onu_name='EPON0/6:2', present=1, status=1, pwr='-7,4', last_act='2023-06-07 18:21:52', order_id=6002;
INSERT INTO pm_onu (mac, olt, onu_name, present, status, order_id) VALUES ('E0:E8:E6:FF:C5:9F', 12, 'EPON0/8:3', 1, 0, 8003) ON DUPLICATE KEY UPDATE olt=12, onu_name='EPON0/8:3', present=1, status=0, order_id=8003;
INSERT INTO pm_onu (mac, olt, onu_name, present, status, pwr, last_act, order_id) VALUES ('E0:E8:E6:B4:FB:95', 12, 'EPON0/3:3', 1, 1, '-11,7', '2023-06-07 18:21:52', 3003) ON DUPLICATE KEY UPDATE olt=12, onu_name='EPON0/3:3', present=1, status=1, pwr='-11,7', last_act='2023-06-07 18:21:52', order_id=3003;
INSERT INTO pm_onu (mac, olt, onu_name, present, status, pwr, last_act, order_id) VALUES ('E0:E8:E6:B4:FB:77', 12, 'EPON0/3:4', 1, 1, '-12,5', '2023-06-07 18:21:52', 3004) ON DUPLICATE KEY UPDATE olt=12, onu_name='EPON0/3:4', present=1, status=1, pwr='-12,5', last_act='2023-06-07 18:21:52', order_id=3004;
INSERT INTO pm_onu (mac, olt, onu_name, present, status, pwr, last_act, order_id) VALUES ('70:A5:6A:B6:7D:72', 12, 'EPON0/8:4', 1, 1, '-16,1', '2023-06-07 18:21:52', 8004) ON DUPLICATE KEY UPDATE olt=12, onu_name='EPON0/8:4', present=1, status=1, pwr='-16,1', last_act='2023-06-07 18:21:52', order_id=8004;
INSERT INTO pm_onu (mac, olt, onu_name, present, status, pwr, last_act, order_id) VALUES ('E0:E8:E6:B4:FB:93', 12, 'EPON0/8:5', 1, 1, '-24,5', '2023-06-07 18:21:52', 8005) ON DUPLICATE KEY UPDATE olt=12, onu_name='EPON0/8:5', present=1, status=1, pwr='-24,5', last_act='2023-06-07 18:21:52', order_id=8005;
INSERT INTO pm_onu (mac, olt, onu_name, present, status, order_id) VALUES ('E0:E8:E6:3E:D4:03', 12, 'EPON0/4:1', 1, 0, 4001) ON DUPLICATE KEY UPDATE olt=12, onu_name='EPON0/4:1', present=1, status=0, order_id=4001;
INSERT INTO pm_onu (mac, olt, onu_name, present, status, pwr, last_act, order_id) VALUES ('80:07:1B:8B:0F:78', 12, 'EPON0/8:6', 1, 1, '-25,5', '2023-06-07 18:21:52', 8006) ON DUPLICATE KEY UPDATE olt=12, onu_name='EPON0/8:6', present=1, status=1, pwr='-25,5', last_act='2023-06-07 18:21:52', order_id=8006;
UPDATE pm_olt_sfp SET count_onu = 0, online_count=0 WHERE olt=12;
INSERT INTO pm_olt_sfp (olt, sfp, count_onu, online_count) VALUES (12, 'EPON0/3', 4, 4) ON DUPLICATE KEY UPDATE count_onu=4, online_count=4;
INSERT INTO pm_olt_sfp (olt, sfp, count_onu, online_count) VALUES (12, 'EPON0/8', 6, 5) ON DUPLICATE KEY UPDATE count_onu=6, online_count=5;
INSERT INTO pm_olt_sfp (olt, sfp, count_onu, online_count) VALUES (12, 'EPON0/5', 1, 1) ON DUPLICATE KEY UPDATE count_onu=1, online_count=1;
INSERT INTO pm_olt_sfp (olt, sfp, count_onu, online_count) VALUES (12, 'EPON0/7', 2, 2) ON DUPLICATE KEY UPDATE count_onu=2, online_count=2;
INSERT INTO pm_olt_sfp (olt, sfp, count_onu, online_count) VALUES (12, 'EPON0/6', 2, 2) ON DUPLICATE KEY UPDATE count_onu=2, online_count=2;
INSERT INTO pm_olt_sfp (olt, sfp, count_onu, online_count) VALUES (12, 'EPON0/4', 1, 0) ON DUPLICATE KEY UPDATE count_onu=1, online_count=0;

Це вивід файлу який запустив в браузері. 
Я так розумію там проблема в самому файлі check_onu Там я знайшов ONU pwr history, і там по формулі вибирає онушки які були записані з значенням NULL, а тоді перезаписує їх з новими датами та часом.
Чи можливо якось зробити щоб скрипт не робив перевірку, а просто дописував мак онушки і дату опитування її?

Ссылка на сообщение
Поделиться на других сайтах
37 минут назад, Tarik89 сказав:

Це вивід файлу який запустив в браузері. 

але це лог опитування лише одного ОЛТ, яке нормально пройшло.
 

 

38 минут назад, Tarik89 сказав:

Я так розумію там проблема в самому файлі check_onu Там я знайшов ONU pwr history, і там по формулі вибирає онушки які були записані з значенням NULL, а тоді перезаписує їх з новими датами та часом.

це формується історія сигналів

 

39 минут назад, Tarik89 сказав:

Чи можливо якось зробити щоб скрипт не робив перевірку, а просто дописував мак онушки і дату опитування її?

можливо, тільки тоді не буде історії, тільки поточний рівень.

Ссылка на сообщение
Поделиться на других сайтах
16 часов назад, VitalyMoiseev сказал:

але це лог опитування лише одного ОЛТ, яке нормально пройшло.

Так, це по одному олту поки пробував, тестував.

Провів тест за ніч. Поставив в крон декілька олтів тим же методом, по одному олту в різний час, щоб не було сильного навантаження. І за всю ніч історії сигналів по деяких онушках так і не записалось.

16 часов назад, VitalyMoiseev сказал:

можливо, тільки тоді не буде історії, тільки поточний рівень.

Наподобі як в понконтролі?
17:32 сигнал -19
18:00 сигнал -19,5
...
20:00 сигнал -20

Мені б таке підійшло

Ссылка на сообщение
Поделиться на других сайтах
36 минут назад, Tarik89 сказав:

Провів тест за ніч. Поставив в крон декілька олтів тим же методом, по одному олту в різний час, щоб не було сильного навантаження. І за всю ніч історії сигналів по деяких онушках так і не записалось.

Покажіть скрін історії сигналів по цим ОНУ.
Записується в базу тільки при зміні рівня на 0,2 дБ чи більше. Якшо рівень не мінявся - то нічого і не писалось.

 

38 минут назад, Tarik89 сказав:

Наподобі як в понконтролі?
17:32 сигнал -19
18:00 сигнал -19,5
...
20:00 сигнал -20

Мені б таке підійшло

І коли ви матимете 10-20 ОЛТ з повним набором ОНУ - то база з їх історією буде рости просто як на дріжжях :)

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

Завантажити: pm_v1.5.1.zip

Версія 1.5.1 від 08.06.2023

1.5.1 08.06.2023: Усунено виявлену проблему з SQL Injection, оновлено файл auth_user.php

  • Thanks 1
Ссылка на сообщение
Поделиться на других сайтах
8 часов назад, VitalyMoiseev сказал:

Записується в базу тільки при зміні рівня на 0,2 дБ чи більше. Якшо рівень не мінявся - то нічого і не писалось.

О, оце вже цікаво. Цього не знав, але думка така була, що може сигнал не мінявся. Понаблюдаю за цим

Зайшов вечором , і сигнали вже з'явились. Сигнал пишеться при зміні в 0,1дб

Дивно що в день в історії їх не було

Ссылка на сообщение
Поделиться на других сайтах
16 часов назад, Tarik89 сказав:

Сигнал пишеться при зміні в 0,1дб

точно, глянув - пишеться при будь-якій зміні
То просто у нас в робочий системі для зменшення обсягу бази пишеться тільки при зміні більше, чим на 0,2

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

Якщо раптом комусь цікаво - є можливість додати інтеграцію з VictoriaMetrics(Prometheus)/Grafana

Скрытый текст

image.thumb.png.41ecf2be8b531629909eecbd6c260375.png

 

Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, VitalyMoiseev сказав:

Якщо раптом комусь цікаво - є можливість додати інтеграцію з VictoriaMetrics(Prometheus)/Grafana

  Скрыть содержимое

image.thumb.png.41ecf2be8b531629909eecbd6c260375.png

 

у мене було реалізовано з zabbix просто картинку парсило)) там і швидкість можна виводити з забіксу і історію сигналів)

Ссылка на сообщение
Поделиться на других сайтах
21 час назад, Інет.укр сказав:

у мене було реалізовано з zabbix просто картинку парсило)) там і швидкість можна виводити з забіксу і історію сигналів)

Ну, картинка - це не те :)
Тут живий дашборд з графани, з усіма функціями
Трафік також є:

Скрытый текст

image.thumb.png.92f583a797c241647147d4fe0a8f29dd.png

Плюс тут Pon Monitor є і експортером для VictoriaMetrics

Ссылка на сообщение
Поделиться на других сайтах
  • 4 weeks later...
  • 6 months later...
В 22.11.2023 в 19:27, VitalyMoiseev сказав:

Якщо раптом комусь цікаво - є можливість додати інтеграцію з VictoriaMetrics(Prometheus)/Grafana

  Відновити прихований контент

image.thumb.png.41ecf2be8b531629909eecbd6c260375.png

 

Цікаво викладіть будь ласка)

Ссылка на сообщение
Поделиться на других сайтах
  • 2 weeks later...
В 09.06.2023 в 13:56, VitalyMoiseev сказал:

точно, глянув - пишеться при будь-якій зміні
То просто у нас в робочий системі для зменшення обсягу бази пишеться тільки при зміні більше, чим на 0,2

 

Віталій, підкажіть де в скриптах можна змінити, щоб сигнал писався постійно, навіть якщо сигнал не міняється.

Ссылка на сообщение
Поделиться на других сайтах
В 18.07.2024 в 19:20, romanset сказав:

Цікаво викладіть будь ласка)

Можу викласти тільки частину коду з приватної системи (частина якої і є пон монітор), якщо хтось захоче це додати в Pon Monitor
https://github.com/VitalyMoiseev/ponmonitor/tree/master/grafana
 

 

6 часов назад, Небесный сказав:

Віталій, підкажіть де в скриптах можна змінити, щоб сигнал писався постійно, навіть якщо сигнал не міняється.

в файлі /scripts/check_onu.php замінити:
 

Скрытый текст

####### ONU pwr history

# read last powers
    $table = $tbl_pref.'onu_pwr_history';
    $query = "SELECT * FROM $table WHERE stoptime IS NULL";
    if (!$result = $mysqli_wb->query($query)){
        $file_log = $mysqli_wb->error."\n";
        echo $file_log;
        file_put_contents($log_file, $file_log, FILE_APPEND);
        exit();
    }
    $query = "DELETE FROM $table WHERE stoptime < (NOW() - INTERVAL $PwrHistTerm);";
    if($result->num_rows == 0 ){
        foreach ($pwrs_macs as $mac => $pwr) {
            $pwr = str_replace(",", ".", $pwr);
            $query .= "INSERT INTO $table (mac, pwr, starttime) VALUES ('$mac', $pwr, NOW());\n";
        }
    }else{
        while( $row = $result->fetch_array(MYSQLI_ASSOC) ){
            $pwr_old[$row['mac']] = floatval($row['pwr']);
            $hist_ids[$row['mac']] = $row['Id'];
        }
        foreach ($pwrs_macs as $mac => $pwr) {
            if (array_key_exists($mac, $pwr_old)){
                $pwr = $pwr + 0;
                if($pwr_old[$mac] != $pwr){
                    $h_id = $hist_ids[$mac];
                    $pwr = str_replace(",", ".", $pwr);
                    $query .= "UPDATE $table SET stoptime=NOW() WHERE Id=$h_id;\n";
                    $query .= "INSERT INTO $table (mac, pwr, starttime) VALUES ('$mac', $pwr, NOW());\n";
                }
            }else{
                $pwr = str_replace(",", ".", $pwr);
                $query .= "INSERT INTO $table (mac, pwr, starttime) VALUES ('$mac', $pwr, NOW());\n";
            }
        }
    }

 

на
 

####### ONU pwr history

    $query = "DELETE FROM $table WHERE stoptime < (NOW() - INTERVAL $PwrHistTerm);";
        foreach ($pwrs_macs as $mac => $pwr) {
            $pwr = str_replace(",", ".", $pwr);
            $query .= "INSERT INTO $table (mac, pwr, starttime, stoptime) VALUES ('$mac', $pwr, NOW(), NOW());\n";
        }

(код не перевірений)

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

У вільний час трохи оновлюю. Додано підтримку GPON BDCOM. Версія ще тестова, працює частково.

 

https://github.com/VitalyMoiseev/ponmonitor/tree/v2_GPON

 

Скрытый текст

image.thumb.png.547a11dc79487542c7fabb8447d21793.png

 

Якщо комусь це ще потрібно чи цікаво - можна ще щось додати або змінити

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

Установил версию 2 ,  есть ошибки:

Ругается на отсутствующую таблицу :
pon_error.thumb.png.94748393aeb774a7690ea2e79c1f59b4.png

 

Закоменировал строки в check_onu.php , появилась другая ошибка :
pon_error1.thumb.png.842f8ca1a199c6a05931b924ad38dba2.png

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

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

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

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

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

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

Вхід

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

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

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

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

    • Від legenda vols
      Всем привет, заезженная тема но приходиться искать по всем уголкам интернета - А именно OID и как их использовать.
      Начнём. 
      для новичков.
      bash 
      set_olt_oids() {
          # Общие для EPON (BDCOM)
          if [[ "$1" =~ ^(P3310|P3310B|P3310C|P3608|P3608B|P3316|P3600-16E|P3608-2TE|P3616-2TE|IEP3310)$ ]]; then
              OID_GET_MAC="1.3.6.1.4.1.3320.101.10.4.1.1"
              OID_VENDOR_ONU="1.3.6.1.4.1.3320.101.10.1.1.1"
              OID_MODEL_ONU="1.3.6.1.4.1.3320.101.10.1.1.2"
              OID_TEMP_ONU="1.3.6.1.4.1.3320.101.10.5.1.2"
              OID_AUNT_ONU_STATUS="SNMPv2-SMI::enterprises.3320.101.10.1.1.26"
              OID_UPTIME_ONU="1.3.6.1.4.1.3320.101.10.1.1.80"
              OID_DIST="1.3.6.1.4.1.3320.101.10.1.1.27"
              OID_IF_MAC10="1.3.6.1.4.1.3320.101.11.1.1.3"
              OID_IFindexmac10="1.3.6.1.4.1.3320.101.11.1.1.1"
              LASTREG_DATE="1.3.6.1.4.1.3320.101.11.1.1.9"
              LASTDEREG_DATE="1.3.6.1.4.1.3320.101.11.1.1.10"
              LASTDEREG_REASON="1.3.6.1.4.1.3320.101.11.1.1.11" 
              OID_ONU_ETH="1.3.6.1.4.1.3320.101.12.1.1.8"
              OID_PORT_INDEX="1.3.6.1.4.1.3320.101.107.1.1" # oid возвращает все индексы ПОН портов, работает не везде
              OID_GEPORT_COUNT="1.3.6.1.4.1.3320.101.10.1.1.12"
              OID_FEPORT_COUNT="1.3.6.1.4.1.3320.101.10.1.1.14"
              OID_REBOOT_ONU="1.3.6.1.4.1.3320.101.10.1.1.29" # snmpset -v2c -c RW IP OID.onuIndex i 0 reboot
              OID_DEL_ONU="SNMPv2-SMI::enterprises.3320.101.11.1.1.2" #.$portID.$mac10" i 0 #mac decimal onu
          fi
          # Общие для GPON
          if [[ "$1" =~ ^(GP3600-08|GP3600-16B|GP3600-08B)$ ]]; then
              ETH_STATUS="1.3.6.1.2.1.2.2.1.8" # статус порта 1 портовая ону
              ETH_STATUS4="1.3.6.1.4.1.3320.10.4.1.1.4" # статус портов 4х портовая ону
              OID_VENDOR_ONU="1.3.6.1.4.1.3320.10.3.1.1.2"
              OID_ADMIN_STATUS="1.3.6.1.4.1.3320.10.4.1.1.3"
              OID_DOWN_REASON="1.3.6.1.4.1.3320.10.3.1.1.35"
              OID_DIST="1.3.6.1.4.1.3320.10.3.1.1.33"
              OID_MODEL_ONU="1.3.6.1.4.1.3320.10.3.1.1.9"
              OID_VENDOR_ONU="1.3.6.1.4.1.3320.10.3.1.1.2"
              OID_REBOOT_ONU="1.3.6.1.4.1.3320.10.3.2.1.4" #snmpset -v2c -c RW IP OID.onuIndex i 1 reboot
              
          fi
          # Уникальные параметры для моделей
          case "$1" in
              # EPON модели
              P3310 | P3310B)
                  OID_RX_ONU="1.3.6.1.4.1.3320.101.10.5.1.6"
                  OID_RX_OLT="1.3.6.1.4.1.3320.9.183.1.1.5"
                  OID_PORT_LIST="1.3.6.1.4.1.3320.101.107.1.1"
                  ;;
              IEP3310)
                  OID_RX_ONU="1.3.6.1.4.1.3320.101.10.5.1.5"
                  OID_RX_OLT="1.3.6.1.4.1.3320.9.183.1.1.5"
                  OID_TX_ONU="1.3.6.1.4.1.3320.101.10.5.1.6"
                  ;;
              P3608 | P3608B | P3310C | P3316 | P3600-16E | P3608-2TE | P3616-2TE)
                  OID_RX_ONU="1.3.6.1.4.1.3320.101.10.5.1.5"
                  OID_RX_OLT="1.3.6.1.4.1.3320.101.108.1.3"
                  OID_TX_ONU="1.3.6.1.4.1.3320.101.10.5.1.6"
                  OID_PORT_LIST="1.3.6.1.4.1.3320.101.107.1.1"
                  ;;
              # GPON модели
              GP3600-08 | GP3600-16B | GP3600-08B | P3600-08E)
                  OID_RX_ONU="1.3.6.1.4.1.3320.10.3.4.1.2"
                  OID_RX_OLT="1.3.6.1.4.1.3320.10.2.3.1.3"
                  OID_TX_ONU="1.3.6.1.4.1.3320.10.3.4.1.3"
                  OID_GET_MAC="1.3.6.1.4.1.3320.10.3.1.1.4"
                  ;;
              *)
                  echo -e "\e[1;91mНеизвестный режим OLT: $1\e[0m"
                  return 1
                  ;;
          esac
          return 0
      }
      что бы было понятно в дальнейшем что за переменные 
      snmp1="snmpwalk -v2c -c паблик стринг"
      snmp2="snmpwalk -v2c -Ouqv -c паблик стринг"
      snmp3="snmpget -v2c -c паблик стринг"
      snmp3q="snmpget -v2c -Ouqv -c паблик стринг"
      snmp4="snmpget -v2c -Ouqv -c приват стринг"
      snmp5="snmpset -v2c -c приват стринг"

      EPON GEPON
      1- OID_GET_MAC="1.3.6.1.4.1.3320.101.10.4.1.1" на бдкомах епон 
      = SNMPv2-SMI::enterprises.3320.101.10.4.1.1.96 = Hex-STRING: A0 94 6A 97 CC 50
      snmp_response=$($snmp3 "$IP" "$OID_GET_MAC.$1" 2>/dev/null | awk -F'Hex-STRING: ' '{print tolower($2)}' | tr -d ' ')
          onu_mac=$(echo "$snmp_response" | sed 's/\(..\)/\1:/g;s/:$//') #Переводим в человеческий вид
          mac10=$(echo "$snmp_response" | awk '{    # Переводим в mac10 дада способов есть миллиард.
              for (i=1; i<=length; i+=2) {
                  printf "%d", strtonum("0x" substr($0, i, 2))
                  if (i + 2 <= length) printf "."
              }
              print ""
          }')

      лучший способ сделать функцию для форматирования снмп запросов в зависимости от типов STRING / HEX-STRING / COUNTER32 и тд тп.

      ifID=$($snmp1 "$IP" "$OID_IF_MAC10" 2>/dev/null | awk -v mac="$mac10" '$0 ~ mac {split($1, arr, "."); print arr[length(arr)-6]; exit}') 


      2 - OID_VENDOR_ONU="1.3.6.1.4.1.3320.101.10.1.1.1"
      тут без лишних слов возвращает вендор онушек 
      SNMPv2-SMI::enterprises.3320.101.10.1.1.1.97 = STRING: "XPON"   если укажем параметр -Oqv  или -Ouqv получим просто "XPON" и надо будет лишь сделать | tr -d ' " '    что бы удалить лапки.

      3 - OID_MODEL_ONU="1.3.6.1.4.1.3320.101.10.1.1.2" аналогично вендорам, получаем модель.

      4- OID_TEMP_ONU="1.3.6.1.4.1.3320.101.10.5.1.2"  - температура ону делим на / 256
      SNMPv2-SMI::enterprises.3320.101.10.5.1.2.17 = INTEGER: 7027  
      temp_onu=$($snmp3q $IP 1.3.6.1.4.1.3320.101.10.5.1.2.$INDEX | awk '{printf "%.2f", $1/265}' 2>/dev/null)

      5 - OID_AUNT_ONU_STATUS="1.3.6.1.4.1.3320.101.10.1.1.26"
      SNMPv2-SMI::enterprises.3320.101.10.1.1.26.276 = INTEGER: 3

      onuAunt_type=$($snmp3q $IP "$OID_AUNT_ONU_STATUS.$INDEX" 2>/dev/null)
          case "$onuAunt_type" in
              0) onuAunt_type_txt="authenticated" ;;
              1) onuAunt_type_txt="registered" ;;
              2) onuAunt_type_txt="deregistered" ;;
              3) onuAunt_type_txt="auto_config" ;;
              4) onuAunt_type_txt="lost" ;;
              *) onuAunt_type_txt="unknown" ;;
          esac

      6 - OID_UPTIME_ONU="1.3.6.1.4.1.3320.101.10.1.1.80" uptime
      SNMPv2-SMI::enterprises.3320.101.10.1.1.80.207 = INTEGER: 290907
      timetick 
      | awk '{h=int($1/3600); m=int(($1%3600)/60); s=$1%60; printf "AliveTime: %dч %dмин %dсек\n", h, m, s}')${reset}"

      7 - OID_DIST="1.3.6.1.4.1.3320.101.10.1.1.27"
      SNMPv2-SMI::enterprises.3320.101.10.1.1.27.149 = INTEGER: 1600
      на епоне в метрах  на гпоне делим на 10

      8 - OID_IF_MAC10="1.3.6.1.4.1.3320.101.11.1.1.3"
      SNMPv2-SMI::enterprises.3320.101.11.1.1.3.14.60.21.18.8.130.175 = Hex-STRING: 3C 15 12 08 82 AF  
      SNMPv2-SMI::enterprises.3320.101.11.1.1.3      .14-PORTINDEX     60.21.18.8.130.175  - MAC10                = Hex-STRING: MAC HEX

      9- OID_IFindexmac10="1.3.6.1.4.1.3320.101.11.1.1.1"
      SNMPv2-SMI::enterprises.3320.101.11.1.1.1.125.60.21.18.6.227.186 = INTEGER: 125
      SNMPv2-SMI::enterprises.3320.101.11.1.1.1.125.60.21.18.6.247.136 = INTEGER: 125
      возвращает PORT INDEX и можно грепнуть по mac10 найти индекс и можно грепнуть через мак10

      10 - LASTREG_DATE="1.3.6.1.4.1.3320.101.11.1.1.9"
      дату отдаёт в хексе. надо декодировать это дело.
      вызов snmp + IP + oid + PORTINDEX + MAC10 
      date_hex=$($snmp1 $IP "$LASTREG_DATE.$IF_INDEX.$mac10" 2>/dev/null | awk -F': ' '{print $2}' | tr -d ' ')
      if [[ -n "$date_hex" ]]; then
              # Преобразуем дату из hex в числовое представление
              data=($(echo "$date_hex" | sed 's/../0x& /g'))
              local year=$((data[0] * 256 + data[1]))
              local month=${data[2]}
              local day=${data[3]}
              local hour=${data[4]}
              local minute=${data[5]}
              local second=${data[6]}


      local formatted_date=$(printf "%04d-%02d-%02d %02d:%02d:%02d" "$year" "$month" "$day" "$hour" "$minute" "$second")


      10 - LASTDEREG_DATE="1.3.6.1.4.1.3320.101.11.1.1.10"
      аналогично 9му оиду.

      11 - LASTDEREG_REASON="1.3.6.1.4.1.3320.101.11.1.1.11" 
      DEREG_STATUS=$($snmp3 $IP "$LASTDEREG_REASON.$IF_INDEX.$mac10" -Oqv 2>/dev/null)
          case "$DEREG_STATUS" in
              2) dereg_status_text="normal";;
              3) dereg_status_text="mpcp-down";;
              4) dereg_status_text="oam-down";;
              5) dereg_status_text="firmware-download";;
              6) dereg_status_text="illegal-mac";;
              7) dereg_status_text="llid-admin-down";;
              😎 dereg_status_text="wire-down";;
              9) dereg_status_text="power-off";;
              255) dereg_status_text="unknown";;
              0) dereg_status_text="Нет данных.";;
              *) dereg_status_text="not found";;
          esac

      есть прикол если онушка autoconfig статус 3 / authenticated статус 0
      там инвертируються 7 и 8  может и от моделей ону зависеть.... 
      7) dereg_status_text="llid-admin-down";;
      😎 dereg_status_text="wire-down";;
      это уже тестами )


      12  -  OID_ONU_ETH="1.3.6.1.4.1.3320.101.12.1.1.8" статус езернет ничего не обычного кроме того что может верно отдать данные с 2-3го раза )
      2 down 1 up 
      там же есть прикол с authenticated autoconfig инвертируется...
      local PORT_COUNT=$($snmp2 "$IP" "$OID_ONU_ETH.$INDEX" | wc -l)
      local ETH_STATUS=$($snmp2 "$IP" "$OID_ONU_ETH.$INDEX.$port" 2>/dev/null)
              [[ "$ETH_STATUS" =~ ^[0-9]+$ ]] || continue  # Проверяем, что ETH_STATUS - это число
              if [[ "$onuAunt_type" == "0" ]]; then
                  STATUS_COLOR=$( [[ "$ETH_STATUS" -eq 2 ]] && echo "UP" || echo "DOWN" )
              else
                  STATUS_COLOR=$( [[ "$ETH_STATUS" -eq 1 ]] && echo "UP" || echo "DOWN" )
              fi

      13 - OID_PORT_INDEX="1.3.6.1.4.1.3320.101.107.1.1" # oid возвращает все индексы ПОН портов, работает не везде.
      14 - OID_GEPORT_COUNT="1.3.6.1.4.1.3320.101.10.1.1.12"   гигабит езернет порты на онушках (кол-во)
      15 - OID_FEPORT_COUNT="1.3.6.1.4.1.3320.101.10.1.1.14"   ФастЕзернет 100мбит аналогично. 
      INTEGER 

      16 - OID_REBOOT_ONU="1.3.6.1.4.1.3320.101.10.1.1.29" # snmpset -v2c -c RW IP OID.onuIndex i 0                                  reboot REBOOT ONU epon snmp
      $snmp5 "$IP" "$OID_REBOOT_ONU.$INDEX" i 0 >/dev/null 2>&1

      17 - delete onu epon  удалить ону бдком снмп 
      OID_DEL_ONU="SNMPv2-SMI::enterprises.3320.101.11.1.1.2"
      $snmp5 "$IP" "$OID_DEL_ONU.$ifID.$mac10" i 0 > /dev/null 2>&1    oid.PORTINDEX.mac10 i 0 
      остальные есть выше там думаю всё понятно.

      SIGNAL LEVELS в зависимости от моделей плат и олтов расписаны 
      все везде одинаково 
      $snmp2 "$IP" "$OID_RX_OLT.$INDEX" 2>/dev/null | awk '{print $NF / 10}')   результат делим на 10.

      epon пакеты, ошибки по портам на онушке.
      broadcasts=$($snmp4 "$IP" "1.3.6.1.4.1.3320.101.12.2.1.16.$INDEX.$port" 2>/dev/null)
      multicasts=$($snmp4 "$IP" "1.3.6.1.4.1.3320.101.12.2.1.17.$INDEX.$port" 2>/dev/null)
      unicasts=$($snmp4 "$IP" "1.3.6.1.4.1.3320.101.12.2.1.18.$INDEX.$port" 2>/dev/null)
      pause=$($snmp4 "$IP" "1.3.6.1.4.1.3320.101.12.2.1.19.$INDEX.$port" 2>/dev/null)
      fcserrs=$($snmp4 "$IP" "1.3.6.1.4.1.3320.101.12.2.1.20.$INDEX.$port" 2>/dev/null )
      oversize=$($snmp4 "$IP" "1.3.6.1.4.1.3320.101.12.2.1.13.$INDEX.$port" 2>/dev/null)
      jabber=$($snmp4 "$IP" "1.3.6.1.4.1.3320.101.12.2.1.14.$INDEX.$port" 2>/dev/null)

      мне бы такое помогло.. а не искать на тонне форумов и сайтов и неделю тыкая snmpwalk и выясняя что и для чего. остального и в инете полно. 
    • Від Amigo
      Продам GEPON ОЛТи BDCOM
      1. BDCOM P3310B (Вживаний) - 6000 грн.
      2. BDCOM P3310C (Вживаний) - 7500 грн.
      3. BDCOM P3310C (Вживаний без вух) - 7000 грн.
      4. BDCOM P3608-2TE (Вживаний) - 20000 грн.
      5. BDCOM P3608-2TE  (Вживаний) - 19000 грн.

    • Від grapefruit
      Доброго вечора, спільното!
      Можливо хтось стикався з завданням,коли потрібно на OLT BDCOM GP3600 по oid визначити час розреєстрування ону. В неті нічого знайти не вдалося, через MIB браузер тоже ніц.
      Якщо підкажете буде дуже вдячний, або хоч підкажіть де шукати.
      Всім гарного вечора)
    • Від alexeya
      Продам OLT ZTE C320. OLT укомплектован блоком живлення PRAM, двома платами GTGH(K00), платою керування SMXA(A31).

      Кожна GTGH-плата, це 16 GPON портів, 16 GPON модулів C++.
      SMXA-плата, це SFP+ (10G) порт, 1 гігабітний комбо порт.

      В наявності 2 одиниці. Один новий, один був у використанні (стан близький до нового)

      Ціна нового - 120000 грн
      Ціна вживаного - 105000 грн

      BDCOM GP-3600-08B куплявся в ДЕПСі в вересні 23 року. В ньому використовувались тільки 3 порти (тобто є тільки 3 GPON SFP модулі). 48к разом з модулями

      ОЛТИ без модулів:
      3310B-2AC - 1штука - 8000
      3310B - 2 штуки - 7500
      3310B + Proline UPS - 1 штука - 8500
      3310D + Proline UPS - 1 штука - 12500
      BDCOM P3600-04 + Proline UPS - 1 штука - 16500
      3616-2TE - 3 штуки - 53к

      Додам вживані EPON С++ модулі по 400 грн за штуку. Або нові по 750 грн за штуку
    • Від alexeya
      Продам оборудование в связи с прекращением деятельности телеком-оператора в Донецкой области.
       
      Eltex MES2324FB в отличном состоянии (8 штук) - 13.000 грн
      Eltex MES5324 (24 SFP+, 4 QSFP) - 62.000 грн
      Extreme Networks X620-16x (16 SFP+) - 42.000 грн
       
      OLT ZTE C320 (GTGH (K00) * 2, PRAM, SMXA (A31) - 32 GPON ports, C++ модули, 10G плата управления. Состояние близкое к новому (был в эксплуатации пол года) - 110.000грн, новый 125.000 грн.
       
      Juniper MX80 (MX5-T upgraded to MX80, 16 subsribers, все лицензии есть), есть 2 штуки. - 1700$
       
      Кабель бухтами (в Павлограде, могу привезти в Днепр или отправка деливери/нп)
      ОКТ-Д(1.0)-2Е1-0,36Ф3,5/0,22Н18-2 — 3000м - 3.5 грн/метр 
      ОКЗ(б2,7)Т-008(7,8 мм) — бухти 3840 и 4000 м - 13 грн/метр
      ОЦБгП-8А1(1х8) 2,7 кН — 2 бухти по 3830 м - 13 грн/метр
       
       
       
























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