Биллинговая система Nodeny
24 Ноября 2024, 07:28:48 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Прекращена поддержка версии Nodeny 49
 
   Начало   Помощь Поиск Войти Регистрация  
Страниц: [1]
  Печать  
Автор Тема: узнать список IP без указанного MAC  (Прочитано 5023 раз)
bnet
NoDeny
Пользователь
*

Карма: 6
Offline Offline

Сообщений: 85


Просмотр профиля
« : 29 Июня 2010, 19:23:34 »

Подскажите скрипт, что-бы посмотреть все IP (или имена, или логины, не важно) клиентов для которых не указаны МАС адреса в технических данных.
Спасибо!
Записан
Andrey Zentavr
NoDeny
Старожил
*

Карма: 29
Offline Offline

Сообщений: 301



Просмотр профиля
« Ответ #1 : 30 Июня 2010, 11:33:17 »

Код:
#!/usr/bin/perl

use DBI;

my %config = (
    # MySQL
    'mysql_host' => 'localhost',
    'mysql_user' => 'bill_kernel',
    'mysql_password' => 'hardpass',
    'mysql_database' => 'bill',
    # NoDeny MAC dopfield id
    'dopfield_id' => '4',
);

##
## MySQL init
##
$dbh = DBI->connect("dbi:mysql:dbname=".$config{'mysql_database'}.";host=".$config{'mysql_host'}, $config{'mysql_user'}, $config{'mysql_password'});

# Select All ip <-> Mac pair
$query="SELECT u.ip AS ip, d.field_value AS mac FROM users u, dopvalues d, (
                SELECT u.ip AS ip, MAX(d.revision) AS rev FROM users u, dopvalues d
                    WHERE u.id=d.parent_id AND d.dopfield_id=".$config{'dopfield_id'}."
                    GROUP BY ip
                ) AS tmp
            WHERE u.id=d.parent_id
            AND d.dopfield_id=".$config{'dopfield_id'}."
            AND u.ip=tmp.ip
            AND d.revision=tmp.rev
            AND TRIM(d.field_value) != ''";


($sth = $dbh->prepare($query)) or die $DBI::errstr;
($sth->execute) or die $DBI::errstr;

# Processing MySQL ip-mac pairs
while(($ip,$mac)=$sth->fetchrow){
    print "$ip -> $mac\n";
}

Вот примерно так выгребаются у меня пары ИП-Мак.
Я думаю что если в запросе поменять
Код:
AND TRIM(d.field_value) != ''

на
Код:
AND TRIM(d.field_value) = ''

то будет именно то что Вам надо.
Записан
Страниц: [1]
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.20 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!