forum.bitel.ru
http://forum.bitel.ru/

Как вытащить айпи шлюзов и порты для всех договоров
http://forum.bitel.ru/viewtopic.php?f=19&t=5802
Страница 1 из 2

Автор:  S-10 [ 18 авг 2011, 12:44 ]
Заголовок сообщения:  Как вытащить айпи шлюзов и порты для всех договоров

Будьте здравы, человече!
Нужно составить sql-запрос, который вытащит из базы билинга айпишники шлюзов ipn и порты для всех договоров.
Порывшись в дбинфо.бител.ру вроде бы нашел нужные параметры:
ipn_gate_host - айпишник прописаного шлюза
ipn_gate_port - прописаный порт
contract.title - название договора

Автор:  S-10 [ 19 авг 2011, 05:49 ]
Заголовок сообщения:  Re: Как вытащить айпи шлюзов и порты для всех договоров

И еще, что-то не могу найти в дбинфо значение мак-адреса абонента. Ткните носом :)

Автор:  skyb [ 19 авг 2011, 06:00 ]
Заголовок сообщения:  Re: Как вытащить айпи шлюзов и порты для всех договоров

Код:
log_session_{mid}_yyyyMM
2648         from_number   char(30)   false      с номера

тык :-D

Автор:  S-10 [ 19 авг 2011, 09:29 ]
Заголовок сообщения:  Re: Как вытащить айпи шлюзов и порты для всех договоров

Хорошо. Осталось только наваять запрос.
Чтобы для всех договоров выводился айпи шлюза, порт шлюза и последний мак-адрес
Эскуэльщики помогите. :D

Автор:  snark [ 19 авг 2011, 13:02 ]
Заголовок сообщения:  Re: Как вытащить айпи шлюзов и порты для всех договоров

skyb писал(а):
Код:
log_session_{mid}_yyyyMM
2648         from_number   char(30)   false      с номера

тык :-D

Прежде чем тыкать _внимательно_ читаем:
S-10 писал(а):
Нужно составить sql-запрос, который вытащит из базы билинга айпишники шлюзов ipn и порты для всех договоров.

Человеку нужен ipn, а не dialup ;)
ЕМНИМС сам ipn о МАС-ах ничего не знает, т.к. о них знает только DHCP сервер.

В общем виде надо на основе данных из ipn_user_gate_{mid}, на основе cid, получить title из contract, а на основе fwid получить host и port из ipn_gate_{mid}.
У меня нет ipn чтобы проверить, но попробуйте что-то типа такого:
Код:
SELECT
    (SELECT title FROM contract WHERE id = iug.cid) AS user,
    (SELECT host FROM ipn_gate_{mid} WHERE id = iug.fwid) AS host,
    (SELECT port FROM ipn_gate_{mid} WHERE id = iug.fwid) AS port
FROM ipn_user_gate_{mid} AS iug

Автор:  skyb [ 19 авг 2011, 15:39 ]
Заголовок сообщения:  Re: Как вытащить айпи шлюзов и порты для всех договоров

snark писал(а):
skyb писал(а):
Код:
log_session_{mid}_yyyyMM
2648         from_number   char(30)   false      с номера

тык :-D

Прежде чем тыкать _внимательно_ читаем:

:-D .... я тебе в аське объясню что ты опять не туда говоришь )))
маки неважно от куда будут, сессии идут с диалапа, от туда можно взять эти маки, а потом просто сотставить запрос к получению ip и порта шлуза...
???
PROFIT

Автор:  S-10 [ 06 сен 2011, 12:58 ]
Заголовок сообщения:  Re: Как вытащить айпи шлюзов и порты для всех договоров

есть два запроса:
первый вытягивает имя договора и порт шлюза ipn
select contract.title as 'dogovor', cpar.val as 'ipn_ip' from contract left join contract_parameter_type_1 as cpar on contract.id = cpar.cid and cpar.pid = 5 order by title
второй вытягивает имя договора и айпишник шлюза ipn
select contract.title as 'dogovor', cpar.val as 'ipn_ip' from contract left join contract_parameter_type_1 as cpar on contract.id = cpar.cid and cpar.pid = 7 order by title

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

Автор:  focus [ 06 сен 2011, 14:44 ]
Заголовок сообщения:  Re: Как вытащить айпи шлюзов и порты для всех договоров

Попробуй
Код:
SELECT c.id, c.title,c.comment,INET_NTOA(ur.addr1),INET_NTOA(ur.addr2), s.title, s.host_or_dir, ur.port1,ur.port2
FROM ipn_user_range_[mid] ur, ipn_user_source_[mid] us, source s, contract c
WHERE ur.id=us.aid and us.source_id=s.id
and c.id=ur.cid

Автор:  focus [ 06 сен 2011, 14:44 ]
Заголовок сообщения:  Re: Как вытащить айпи шлюзов и порты для всех договоров

S-10 писал(а):
есть два запроса:
первый вытягивает имя договора и порт шлюза ipn
select contract.title as 'dogovor', cpar.val as 'ipn_ip' from contract left join contract_parameter_type_1 as cpar on contract.id = cpar.cid and cpar.pid = 5 order by title
второй вытягивает имя договора и айпишник шлюза ipn
select contract.title as 'dogovor', cpar.val as 'ipn_ip' from contract left join contract_parameter_type_1 as cpar on contract.id = cpar.cid and cpar.pid = 7 order by title

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


тут связывай через contract.id

Автор:  S-10 [ 07 сен 2011, 05:34 ]
Заголовок сообщения:  Re: Как вытащить айпи шлюзов и порты для всех договоров

если просто скопипастить ваш запрос в SQLeditor, то выдаёт следующее:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '[mid] ur, ipn_user_source_[mid] us, source s, contract c WHERE ur.id=us.aid and ' at line 1

Автор:  focus [ 07 сен 2011, 06:05 ]
Заголовок сообщения:  Re: Как вытащить айпи шлюзов и порты для всех договоров

вместо [mid] нужно подставить цифру - код модуля IPN.
Смотрим этот код через клиента.
Главное меню - Модули - Редактор модулей
Там в левой таблице будет список модулей, вот там ищем нужный и из колонки код вставляем цифирь в запрос.

Автор:  S-10 [ 07 сен 2011, 11:15 ]
Заголовок сообщения:  Re: Как вытащить айпи шлюзов и порты для всех договоров

попробовал, но это совсем не то, что нужно мне.
мне надо по номерам договоров вытянуть ип шлюза ipn, порт ipn и из модуля phone вытянуть log_session_from_number_201109 (вроде так), то бишь MAC-address абонента

Автор:  snark [ 07 сен 2011, 12:20 ]
Заголовок сообщения:  Re: Как вытащить айпи шлюзов и порты для всех договоров

Как появлюсь на работе накатаю Вам скриптец который выдаст то что надо, раз skyb за 20 дней (столько прошло с момента 1-го поста) не смог это сделать.

Автор:  skyb [ 07 сен 2011, 12:25 ]
Заголовок сообщения:  Re: Как вытащить айпи шлюзов и порты для всех договоров

snark писал(а):
Как появлюсь на работе накатаю Вам скриптец который выдаст то что надо, раз skyb за 20 дней (столько прошло с момента 1-го поста) не смог это сделать.

вот чтожеж ты меня все время цепляешь то :-DDDDD
У меня другие задачи, я ща активно к переходу готовлюсь....а тут ещё и радиус падает ;)

Автор:  snark [ 07 сен 2011, 12:46 ]
Заголовок сообщения:  Re: Как вытащить айпи шлюзов и порты для всех договоров

А кого тут еще цеплять? Тут ты один такой )))

Автор:  skyb [ 07 сен 2011, 13:16 ]
Заголовок сообщения:  Re: Как вытащить айпи шлюзов и порты для всех договоров

snark писал(а):
А кого тут еще цеплять? Тут ты один такой )))

хехе...хоть гдето отличился =)

Автор:  S-10 [ 07 сен 2011, 13:28 ]
Заголовок сообщения:  Re: Как вытащить айпи шлюзов и порты для всех договоров

snark, буду вам весьма признателен )
если чё, с меня +1 )

Автор:  S-10 [ 13 сен 2011, 13:33 ]
Заголовок сообщения:  Re: Как вытащить айпи шлюзов и порты для всех договоров

и тишинааа...

Автор:  S-10 [ 15 сен 2011, 10:20 ]
Заголовок сообщения:  Re: Как вытащить айпи шлюзов и порты для всех договоров

Подскажите, как вытянуть из модуля ipn вот это log_session_{mid}_yyyyMM from_number, то бишь мне нужно вытянуть мак-адреса

Автор:  skyb [ 15 сен 2011, 11:03 ]
Заголовок сообщения:  Re: Как вытащить айпи шлюзов и порты для всех договоров

select from_number from log_session_1_201109

Автор:  S-10 [ 16 сен 2011, 06:17 ]
Заголовок сообщения:  Re: Как вытащить айпи шлюзов и порты для всех договоров

Спс.
Теперь как бы привязать номера договоров к макам, причем надо чтобы вытягивался только последний мак с которого выходили в инет.
Что-то наподобие:
(номер договора) (последний мак)
000001___________0000.1245.dfdf
000002___________0101.efbf.34aa
000003___________4161.eaff.44bb

Автор:  snark [ 16 сен 2011, 19:07 ]
Заголовок сообщения:  Re: Как вытащить айпи шлюзов и порты для всех договоров

Код:
SELECT
    (SELECT c.title FROM contract c LEFT JOIN user_login_{mid} AS ul ON (ul.cid = c.id) WHERE ul.id = lid) AS dogovor,
    from_number AS MAC
FROM
    log_session_{mid}_yyyyMM

Договор и его МАС из таблицы сессий.

Автор:  S-10 [ 19 сен 2011, 11:26 ]
Заголовок сообщения:  Re: Как вытащить айпи шлюзов и порты для всех договоров

Большое спасибо! Работает! :)
Только почему то на многих договорах вместо номера выводит NULL
| NULL | 00de.fa27.a103 |
| 001367 | 0016.17d9.b319 |
| NULL | 0080.4840.06ae |
| 000300 | 485b.39e7.bea5 |
| NULL | 0024.54dd.32d5 |
| 008102 | 4487.fc5a.8f19 |
| NULL | 0014.858e.127f |
| 003757 | 6cf0.497d.e7b5 |
| 107790 | 3408.04b7.a9c1 |
| NULL | 001b.38d6.ee7b |
| 006346 | f07d.6899.ffd1 |
| 103437 | 0024.546a.5006 |
| 007238 | 3408.04d5.2d51 |
| 001584 | 000c.76e4.68f0 |
| NULL | f07d.689f.0795 |

Может подскажете из за чего это может быть?

Автор:  S-10 [ 19 сен 2011, 13:28 ]
Заголовок сообщения:  Re: Как вытащить айпи шлюзов и порты для всех договоров

Этот запрос выводит маки всех сессий.
А можно ли чтобы выводился мак только последней сессии? :?:

Автор:  snark [ 19 сен 2011, 17:39 ]
Заголовок сообщения:  Re: Как вытащить айпи шлюзов и порты для всех договоров

Для активных:
Код:
... WHERE status = 0

для завершенных:
Код:
... WHERE status = 1

А вообще, что мешает использовать GROUP BY или использующий его DISTINCT, для уникальности записей?

Автор:  S-10 [ 21 сен 2011, 05:38 ]
Заголовок сообщения:  Re: Как вытащить айпи шлюзов и порты для всех договоров

Distinct выдаёт по несколько маков, с которых были сессии.
А по поводу Null вместо имён договоров, ничего не можете подсказать?

Автор:  snark [ 21 сен 2011, 19:03 ]
Заголовок сообщения:  Re: Как вытащить айпи шлюзов и порты для всех договоров

S-10 писал(а):
по поводу Null вместо имён договоров, ничего не можете подсказать?

title в таблице contract для таких договоров заполнено?

Автор:  S-10 [ 22 сен 2011, 05:44 ]
Заголовок сообщения:  Re: Как вытащить айпи шлюзов и порты для всех договоров

Да, заполнено.
Сделал запрос SELECT title FROM contract; , все номера договоров показываются как надо. (договоров с NULL нет)
В чем еще может быть причина?

Автор:  stark [ 22 сен 2011, 10:30 ]
Заголовок сообщения:  Re: Как вытащить айпи шлюзов и порты для всех договоров

S-10 писал(а):
Большое спасибо! Работает! :)
Только почему то на многих договорах вместо номера выводит NULL
| NULL | 00de.fa27.a103 |
| 001367 | 0016.17d9.b319 |
| NULL | 0080.4840.06ae |
| 000300 | 485b.39e7.bea5 |
| NULL | 0024.54dd.32d5 |
| 008102 | 4487.fc5a.8f19 |
| NULL | 0014.858e.127f |
| 003757 | 6cf0.497d.e7b5 |
| 107790 | 3408.04b7.a9c1 |
| NULL | 001b.38d6.ee7b |
| 006346 | f07d.6899.ffd1 |
| 103437 | 0024.546a.5006 |
| 007238 | 3408.04d5.2d51 |
| 001584 | 000c.76e4.68f0 |
| NULL | f07d.689f.0795 |

Может подскажете из за чего это может быть?

у вас в log_session_{mid}_yyyyMM случайно нет cid, которые ссылаются на несуществующие договора ?

Автор:  S-10 [ 22 сен 2011, 13:53 ]
Заголовок сообщения:  Re: Как вытащить айпи шлюзов и порты для всех договоров

stark писал(а):
у вас в log_session_{mid}_yyyyMM случайно нет cid, которые ссылаются на несуществующие договора ?

а как это узнать?

Страница 1 из 2 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/