Перейти к содержимому
Local
dycost

Получение mac с порта коммутатора

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

Такая проблема.

Был написан модуль для получения mac абонента с порта коммутатора. Модуль перестал работать после обновления биллинга. Обновлялся точно не скажу с какого релиза, ориентировочно 0.8.9 или 0.9.0.

 

Суть вот в чем.

Модуль использует скрипт на питоне вызываемый через popen, в принципе весь код вот:

if (cfr('GET_MAC')) {
	
	$inputs = wf_TextInput('switch_address', __('Enter switch address'), '', true, '10');
	$inputs.= wf_TextInput('switch_port', __('Enter switch port'), '', true, '10');
	$inputs.= wf_Submit(__('Get'));
	$form = wf_Form("", 'POST', $inputs, 'glamour');
	show_window(__('Get mac address from switch port'), $form);
	
	if (isset ($_POST['switch_address'])) {
		$process = popen(escapeshellcmd('/usr/local/www/apache22/data/billing/modules/general/get_mac/get_mac.py ' . $_POST['switch_address'] . ' ' . $_POST['switch_port']), "r");
		$mac = fread($process, 2096);
		show_window(__('Active mac address: '), $mac);
		pclose($process);
		};

	} else {
	show_error(__('Access denied'));
}

Питон потому, что парсинг на php я не осилил..

из питона вызывается snmpwalk через  popen (да, такая вот матрешка), собственно для получения mac.

До обновления все работало, и сейчас если выполнить  из консоли что-то типа такого:

<?php
$process = popen(escapeshellcmd('/usr/local/www/apache22/data/billing/modules/general/get_mac/get_mac.py 172.16.0.182 2', "r");
$mac = fread($process, 2096);
echo "$mac";
?>

то все работает.

При выполнении из биллинга питон не создает процесс-потомок snmpwalk.

Какие настройки php или биллинга копать?

Поделиться сообщением


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

А error.log то что говорит?

Явно должно свалится с какой-то ошибкой.

Вряд ли апдейт биллинга мог сломать что-то подобное ибо нашего апи там как такого и нет.

Да и собсно чем штатный FDB не подошел?

Изменено пользователем l1ght

Поделиться сообщением


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

В логах апача пусто.

Ошибки вообще нет. Просто объект класса popen создается пустой.

Про апдейт биллинга я подумал, ибо больше не происходило ничего. PHP, Apache,python не обновлялись и конфиги не правились.

Штатный, насколько я помню, требует dhcp на этой же машине, а этим занимается совсем другая железка.

Поделиться сообщением


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

В логах апача пусто.

Ошибки вообще нет. Просто объект класса popen создается пустой.

Про апдейт биллинга я подумал, ибо больше не происходило ничего. PHP, Apache,python не обновлялись и конфиги не правились.

Штатный, насколько я помню, требует dhcp на этой же машине, а этим занимается совсем другая железка.

мы обычно shell_exec для такой херни пользуем, пробуйте

Поделиться сообщением


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

не, не помогло(

где-то ограничивается глубина рекурсии в вызове процессов из процессов.

пришлось переписать так чтобы snmpwalk из php вызывался.

$command = shell_exec('/usr/local/www/apache22/data/billing/modules/general/get_mac/get_command.py ' . $_POST['switch_address'] . ' ' . $_POST['switch_port']);
$data = shell_exec($command);
$mac = shell_exec('/usr/local/www/apache22/data/billing/modules/general/get_mac/parse_mac.py ' . $data);

Но гложет любопытство, что же это было?

гугл молчалив и таинственен..

Поделиться сообщением


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

не, не помогло(

где-то ограничивается глубина рекурсии в вызове процессов из процессов.

пришлось переписать так чтобы snmpwalk из php вызывался.


$command = shell_exec('/usr/local/www/apache22/data/billing/modules/general/get_mac/get_command.py ' . $_POST['switch_address'] . ' ' . $_POST['switch_port']);
$data = shell_exec($command);
$mac = shell_exec('/usr/local/www/apache22/data/billing/modules/general/get_mac/parse_mac.py ' . $data);

Но гложет любопытство, что же это было?

гугл молчалив и таинственен..

Какая странная конструкция получилась.

Что возвращает 
 

shell_exec('/usr/local/www/apache22/data/billing/modules/general/get_mac/get_command.py ' . $_POST['switch_address'] . ' ' . $_POST['switch_port']);

И

shell_exec('/usr/local/www/apache22/data/billing/modules/general/get_mac/parse_mac.py ' . $data);

А то я немного не понял какого там происходит вообще

1 час назад, dycost сказал:

Штатный, насколько я помню, требует dhcp на этой же машине, а этим занимается совсем другая железка.

Штатный сбор FDB вообще никак к DHCP не относится.

Смотрите модуль опроса свичей и их snmp шаблоны

  • Like 1

Поделиться сообщением


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

первое комманду, для получения мака, типо такой конструкции:

"/usr/local/bin/snmpwalk -c " + name + " -v 2c -Cc " + IP +  " " + oid_port + " | grep 'INTEGER: " + PORT +"$'"

там фишка, что для разных коммутаторов разные OID'ы

последняя парсит данные, что выдал snmpwalk

как-то так:

list_addr =  map(lambda elem: '{0:0>2x}'.format(int(elem)), data.split(".")[-6:])
res = ":".join(list_addr)

я просто старый скрипт разбил на 2.

понимаю, что надо бы на php переписать, но лень, да и не знаю я php на столько.

Поделиться сообщением


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

первое комманду, для получения мака, типо такой конструкции:


"/usr/local/bin/snmpwalk -c " + name + " -v 2c -Cc " + IP +  " " + oid_port + " | grep 'INTEGER: " + PORT +"$'"

там фишка, что для разных коммутаторов разные OID'ы

последняя парсит данные, что выдал snmpwalk

как-то так:


list_addr =  map(lambda elem: '{0:0>2x}'.format(int(elem)), data.split(".")[-6:])
res = ":".join(list_addr)

я просто старый скрипт разбил на 2.

понимаю, что надо бы на php переписать, но лень, да и не знаю я php на столько.

И это всё ради того что б не смотреть как работает штатный опрос, ок

  • Like 1

Поделиться сообщением


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

И это всё ради того что б не смотреть как работает штатный опрос, ок 

хм... да, наверное..

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

я сначала подумал о модуле Новые маки,

Поделиться сообщением


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

хм... да, наверное..

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

я сначала подумал о модуле Новые маки,

НОВОВВЕДЕНИЕ!?!

Да этому функционалу лет и лет

Поделиться сообщением


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

нуу... как-то мимо он меня прошел

Поделиться сообщением


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

нуу... как-то мимо он меня прошел

Он присутствовал еще с релизов 0.4.1-0.4.2. Это где-то начало 2013-го года.

  • Haha 1

Поделиться сообщением


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

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

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

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

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

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

Войти

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

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

  • Похожие публикации

    • Автор: init
      Добрый день! Появилась необходимость обновить Ubilling с версии 0.7.2 до текущей, как бы это сделать быстро и безболезненно?
      Я так понимаю надо с версии на версию прыгать? или есть какой-то инструмент который инкрементно обновит до текущей версии?
      Благодарю
    • Автор: 005836
      Помогите пожалуйста.
      ОС freebsd 12/freeradius3/mikrotik os 5.24
      Настраивал Ubilling + Mikrotik pppoe по радиусу
      В дебаг режиме радиус говорит

       
    • Автор: nightfly
      Мы знаем, всем уже надоело ждать. Вот, первый в этом году стабильный релиз Ubilling 0.9.5 rev 6653 syoubu da
       
      Из основных изменений
      Изменения в структуре БД. см. дамп. alter.ini: новые опции FWTBT_* управляющие знанием о том, по ком звонит колокол. alter.ini: новая опция CALLSHIST_ENABLED включающая модуль «История звонков». alter.ini: новые необязательные опции PON_UONU_USER_BY_MAC_SEARCH_* управляющие возможностью поиска пользователя по МАС при регистрации ONU из «неизвестных ONU». alter.ini: новая опция IPCHANGE_ARP_CLEANUP указывающая на необходимость очистки от старых arp-записей при смене IP пользователя. alter.ini: новая опция STICKY_REVELATIONS_ENABLED включающая механику откровений. alter.ini: новая опция ISHIMURA_ENABLED включающая планетарный потрошитель Ишимура. alter.ini: новая опция PONCPE_CONTROLS_ENABLED включающая отображение элементов управления для присваивания PON CPE в профиле пользователя. alter.ini: новая необязательная опция PONCPE_TARIFFMASK указывающая маску имени тарифа, для пользователей, для которых требуется учет PON CPE. userstats.ini: добавлена новая необязательная опция AF_TARIFF_ALLOW_ANY позволяющая включить возможность заморозки счета из личного кабинета не взирая на тарифный план абонента. userstats.ini: новая опция ISHIMURA_ENABLED включающая использование трафика Ишимуры при показе статистики. userstats.ini: новая необязательная опция MG_TARIFFSALLOWED при помощи которой можно ограничить тарифы на которых разрешено использование Megogo. Модуль «Планирование работ»: исправлена ошибка, появляющейся при фильтра заявок «Показать задачи только для меня» Модуль «Печать документов»: исправлена работа макроса {CONTRACT} при использовании не уникальных номеров договоров. Модуль «Возможности подключений»: добавлена текстовая пометка о телепатической угаданности пользователя, для упрощения фильтрования. Модуль «Отчет по подключениям»: в статистику мертвых пользователей добавлен раздельный счетчик замороженных. Модуль «Учет зарплат»: для зарплатных ведомостей реализована возможность просмотра/печати без графиков. Модуль SMSZilla: для направления «Интернет» добавлен фильтр активности пользователя. Модуль «Сети и услуги»: из модуля «Смена IP» портирована статистика использования адресов. Модуль «Работники»: добавлена возможность ограничивать сумму пополнения абонентов в месяц Модуль «Финансовый отчет»: исправлена сортировка в сводке за год. Модуль «Отчет по подключениям»: селектор года теперь сохраняет свое состояние. Модуль «Финансовый отчет»: селектор года теперь сохраняет свое состояние. Модуль «Импорт банковских выписок»: оптимизировано быстродействие, возможно исправлена проблема повторного внесения некоторых платежей. Новый модуль По ком звонит колокол: позволяет получать near real-time оповещения о входящих звонках. Модуль [По ком звонит колокол]: исправлены дубликаты отображения входящих звонков Модуль «Текущий кеш FDB»: добавлена возможность навигации из модуля в профиль свитча. askozianum: теперь также логирует входящие звонки в базу. Новый модуль «История звонков»: позволяет просматривать предыдущие входящие звонки ваших абонентов. Модуль Учет зарплат: добавлена возможность отметить для выплаты все работы одним кликом. Модуль «Планирование работ»: исправлена ошибка приводившая к невозможности удаления задач в некоторых ситуациях. Модуль «Телефонный справочник»: теперь использует JQuery Data Tables для показа списка контактов. Модуль «Смена IP»: теперь также умеет чистить за собой старые arp записи при смене IP. Модуль «Объявления»: полностью переделан код, скорость загрузки модуля увеличилось в много раз. Модуль «Персональные заметки и напоминания»: добавлена возможность осыпать всех откровениями. Модуль «Удаление пользователя»: теперь при удалении пользователя также очищаются его детали подключения. Модуль SMSZilla: исправлена работа фильтра «денег не хватит на следующий месяц». Модуль «TrinityTV»: добавлен функционал привязки устройств из личного кабинета абонента. Модуль «Отчет по задачам»: исправлен показ дат в печати. Модуль Склад: история бронирования теперь позволяет нормально отслеживать историю конкретной брони. Модуль «Склад»: теперь умеет рассылать сотрудникам зарезервированные на них ТМЦ скопом, для сверки того что у них в багажниках. Модуль «Статистика по трафику»: теперь также агрегирует при показе нативный трафик коллекторов с трафиком Ишимуры. Модуль «Онлайн»: теперь также агрегирует при показе нативный трафик коллекторов с трафиком Ишимуры. Понизатор: добавлена возможность поиска пользователя(логина и IP) по МАС при регистрации ONU из «неизвестных ONU». Так же для тех, кто использует ONU с NAT, у которых МАС WAN-подключения изменяется на какое-то значение добавлена возможность инкремента/декремента МАС адреса ONU. Модуль «Права администраторов»: добавлена возможность на ходу перелогиниваться в режиме призрака, под другими администраторами. Модуль «Состояние системы»: добавлена возможность уничтожения отдельных ключей кэша. RemoteAPI: добавлен новый вызов warehousetelegram для рассылки зарезервированных ТМЦ. Глобально: в диалогах выбора года расширен диапазон доступных для выбора лет. Глобально: исправлен фильтр ввода email, теперь email может содержать тире Кабинет пользователя: подавлены попытки Google Chrome пытаться автоматически переводить страницу. Кабинет пользователя: исправлены проблемы со входом по логину/паролю. Кабинет пользователя: модуль «Статистика по трафику» теперь также агрегирует нативный трафик коллектора с трафиком Ишимуры при показе. Кабинет пользователя: модуль «Megogo» теперь умеет ограничивать использование сервиса относительно тарифов пользователя. OpenPayz: добавлен фронтэнд для работы с ПриватБанком «PRIVATX_STRICT», призванный обеспечить слегка противоположный фронтэнду «PRIVATMULTI» функционал. OpenPayz: фронтенд «IBOX» - добавлена отдача информации по пользователю UBinstaller: собарны бинарные пакеты для установки биллинга на FreeBSD 12.0 amd64. UBinstaller: для конфигуратора NAS на rscriptd собраны бинарные пакеты для FreeBSD 12.0 amd64. UBinstaller: на мороз выкинуты все неактуальные и не поддерживаемые на данный момент релизы FreeBSD.  
      Также вы можете:
      Почитать полный чейнджлог: http://wiki.ubilling.net.ua/doku.php?id=changelog2019#rev_6653
      Ознакомиться с рекомендациями к обновлению: http://wiki.ubilling.net.ua/doku.php?id=relnotes#section095
      Потрогать руками демку: http://ubilling.net.ua/?module=fnpages&pid=demo
       

    • Автор: Di111
      Привет, простите что не по правилам, не проверял, но должно работать ))
      backend
      robokassa.ini
      frontend - метод отсылки данных POST, если используете GET , меняем ниже $_POST на $_REQUEST
      robokassa.ini
      PASS2="пароль2"
    • Автор: Иван Дураков
      Предлагаю авторам запилить модуль который будет автоматом (например раз в месяц) переводить 1% от прибыли мантейнеру (-ам) этого замечательного билинга.
      Наверняка найдутся зануды которые станут возражать, прошу их проходить мимо. Более того - я настаиваю чтобы этот модуль был включен после установки по умолчанию!
      Жадные, глупые и просто злые люди всегда смогут его выключить парой кликов в админке. Но даже если лишь 10% от тех кто юзает сей продукт согласятся донейтить мизерную сумму на постоянной основе - уверен что это сможет стать хорошей поддержкой авторам а также хорошей мотивацией им помогать вам же, подумайте хорошенько!
      Можно сделать настраиваемыми параметры - процент или фиксированную сумму.
      Автору наверное нужно будет иметь эккаунты во всех платёжнных системах, тогда можно будет автоматически настраиваться на ту которой будет пользоваться владелец билинга. Но уверен что это уже мелочи жизни - всё решаемо, если только захотеть.
      ps: наверное хорошо было бы подвесить эту темку : )
       
      Прошу сообщество поддержать сию идею, а может ктото даже и запилит сам код, как донейшин авторам :))
      pps: столько лет подряд тянуть подобный проект никакого здоровья не хватит. нужно это ценить.
×