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

Ip адрес
http://forum.bitel.ru/viewtopic.php?f=5&t=10768
Страница 1 из 1

Автор:  Inspire [ 07 авг 2015, 12:00 ]
Заголовок сообщения:  Ip адрес

Пришло письмо из гу мвд с просьбой вычислить по ip-адресу :) Как это можно лучше всего сделать? Я хочу сделать запрос в бд, но в таблице log_session ip адрес хранится в непонятном для меня формате, такого типа 531350000.

Автор:  stark [ 07 авг 2015, 14:07 ]
Заголовок сообщения:  Re: Ip адрес

SELECT ipaddr, INET_NTOA(ipaddr) FROM bgbilling_test.log_session_21_201207;

Автор:  dimOn [ 07 авг 2015, 14:37 ]
Заголовок сообщения:  Re: Ip адрес

Цитата:
такого типа 531350000

ip-адрес — это 32-битовое число по определению
так вот это оно и есть :umnik:

Автор:  Inspire [ 07 авг 2015, 17:12 ]
Заголовок сообщения:  Re: Ip адрес

Спасибо

Автор:  snark [ 26 дек 2015, 00:58 ]
Заголовок сообщения:  Re: Ip адрес

bgb_IP_search.sh
Код:
#!/bin/sh

# IP адрес абонента, который нужно найти
ip_adress='1.2.3.4'

# имя файла, куда запишутся результаты поиска
log_file="/path/to/IP_search_$ip_adress.txt"

# SQL Server configuration
db_host='localhost'
db_port='3306'
db_user='bill'
db_pass='bgbilling'
db_name='bgbilling'

mysql="/usr/bin/mysql -h $db_host -P $db_port -u $db_user -p$db_pass -D $db_name -B --default-character-set=utf8 -e"

session_table_list=`$mysql "SHOW TABLES FROM bgbilling WHERE Tables_in_bgbilling LIKE 'log_session_1_%';" | grep -v 'Tables_in_bgbilling'`

echo 'dogovor;start;stop;time;mac;ip' > $log_file

if [ -n "$session_table_list" ]; then
    for table_name in $session_table_list; do
        $mysql "SELECT (SELECT c.title FROM contract c LEFT JOIN user_login_1 ul ON (ul.cid = c.id) WHERE ul.id = lid) AS dogovor, DATE_FORMAT(session_start, '%d.%m.%Y %T') AS start, DATE_FORMAT(session_stop, '%d.%m.%Y %T') AS stop, SEC_TO_TIME(session_time) AS time, from_number AS mac, INET_NTOA(ipaddr) AS ip FROM $table_name WHERE ipaddr = INET_ATON('$ip_adress');" | \
        awk '/'$ip_adress'/ {printf("%s;%s %s;%s %s;%s;%s;%s\n",$1,$2,$3,$4,$5,$6,$7,$8)}' >> $log_file
    done
fi

bgb_MAC_search.sh
Код:
#!/bin/sh

# MAC адрес абонента, который нужно найти
# адрес записывать только так, как он отобраджается в биллинге,
# т.е. в нижнем регистре без каких либо символов разделителей
mac_adress='010203040506'

# имя файла, куда запишутся результаты поиска
log_file="/path/to/MAC_search_$mac_adress.txt"

# SQL Server configuration
db_host='localhost'
db_port='3306'
db_user='bill'
db_pass='bgbilling'
db_name='bgbilling'

mysql="/usr/bin/mysql -h $db_host -P $db_port -u $db_user -p$db_pass -D $db_name -B --default-character-set=utf8 -e"

session_table_list=`$mysql "SHOW TABLES FROM bgbilling WHERE Tables_in_bgbilling LIKE 'log_session_1_%';" | grep -v 'Tables_in_bgbilling'`

echo 'dogovor;start;stop;time;mac;ip' > $log_file

if [ -n "$session_table_list" ]; then
    for table_name in $session_table_list; do
        $mysql "SELECT (SELECT c.title FROM contract c LEFT JOIN user_login_1 ul ON (ul.cid = c.id) WHERE ul.id = lid) AS dogovor, DATE_FORMAT(session_start, '%d.%m.%Y %T') AS start, DATE_FORMAT(session_stop, '%d.%m.%Y %T') AS stop, SEC_TO_TIME(session_time) AS time, from_number AS mac, INET_NTOA(ipaddr) AS ip FROM $table_name WHERE from_number = '$mac_adress';" | \
        awk '/'$mac_adress'/ {printf("%s;%s %s;%s %s;%s;%s;%s\n",$1,$2,$3,$4,$5,$6,$7,$8)}' >> $log_file
    done
fi

Вдруг кому пригодится.

Автор:  skyb [ 08 янв 2016, 06:43 ]
Заголовок сообщения:  Re: Ip адрес

И этот человек ещё на меня фейспалмил...))))

Автор:  snark [ 08 янв 2016, 09:15 ]
Заголовок сообщения:  Re: Ip адрес

skyb писал(а):
И этот человек ещё на меня фейспалмил...))))

Изображение

Автор:  stark [ 20 янв 2016, 16:28 ]
Заголовок сообщения:  Re: Ip адрес

skyb писал(а):
И этот человек ещё на меня фейспалмил...))))

Нормальный скрипт.. Думаю фейспалм был за что-то похуже :)

Автор:  skyb [ 26 фев 2016, 18:25 ]
Заголовок сообщения:  Re: Ip адрес

stark писал(а):
skyb писал(а):
И этот человек ещё на меня фейспалмил...))))

Нормальный скрипт.. Думаю фейспалм был за что-то похуже :)

дело не в скрипте, а в его использовании, зачем пользоваться башем, создавать файл для переменных, если все уже встроено в биллинге и можно делать гораздо удобней, я не к коду придрался, а к юзабилити самого процесса, микроскопом забивать можно гвозди, но зачем )))
snark, я любя ;-)

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