|
|
|
Проблема со сравнением
|
|||
|---|---|---|---|
|
#18+
Короче читаю логи из юникс сервера, парсю их и записываю в Vector, выглядит этот вектор так: Код: plaintext 1. 2. 3. Как видно из выше написанного, есть одинаковые маки с разными айпи (в данном случае реч идет о серваке,который имеет одну сетевую,на которой прописано 2 айпи). Есть таблица базы данных: Код: plaintext 1. 2. 3. Короче как я делаю: беру строчку из пришедшего на сравнение вектора, выбираю там айпи и мак, ищу есть ли в базе уже такой айпи,если есть,то проверяю соответствует ли данному айпи в базе мак который пришел из файла с этим айпи, если и маки совпадают,значит ничего не шлем админу,т.е. подмен никаких не было, если маки не совпадают,то делаем обновление мак адреса в базе ,и шлем сообщение админу,что у юзера поменялся мак адрес.Теперь,если пришедший айпи не совпал с тем,который есть в базе, но совпал мак,тогда мне нужно сделать обновление айпи адреса которому соответствует мак,вот тут весь геморой и получается, геморой вот в чем: строка из файла zzz 3333 ---> в базе находим получается две строчки,которым соответстует мак zzz, т.е.: Код: plaintext Код: plaintext на такую ситуацию получается 2 запроса, эти 2 запроса обновляют две строки Код: plaintext Код: plaintext А бывает еще и такая ситуация: Опять же вектор: Код: plaintext 1. 2. 3. Код: plaintext 1. 2. 3. Код: plaintext Код: plaintext Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 09:59:02 |
|
||
|
Проблема со сравнением
|
|||
|---|---|---|---|
|
#18+
не очень понял а чего бы хотелось-то? Может ложить в HashMap? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 11:09:30 |
|
||
|
Проблема со сравнением
|
|||
|---|---|---|---|
|
#18+
LINUXERне очень понял а чего бы хотелось-то? Может ложить в HashMap? геморой вот в чем: строка из файла: Код: plaintext Код: plaintext 1) update ... set ip=3333 where мак=zzz and ip=ssss Дальше беру следующую строчку из файла,например она равна: Код: plaintext 2) update ... set ip=pppp where мак=zzz and ip=ssss в результате один завпрос 2) перекрывает запрос 1), как избавится от этого Говоришь ложить в HashMap,но там могут быть одинаковые маки, а это значит,что как ключ он не годится,если в качестве ключа брать ip,тогда тоже есть гемор,но о нем позже скажу если ничего не будет предложено по поводу первой идеи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 11:28:04 |
|
||
|
Проблема со сравнением
|
|||
|---|---|---|---|
|
#18+
Мне кажется, что вам нужно добавить колонку в таблицу, которая вместе с MAC адресом будет являться ключиком таблицы... Например название интерфейса. Тогда update будет таким: update ... set ip=3333 where мак=zzz and ip=ssss and interface='eth0' -- nexus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 12:03:09 |
|
||
|
Проблема со сравнением
|
|||
|---|---|---|---|
|
#18+
nexМне кажется, что вам нужно добавить колонку в таблицу, которая вместе с MAC адресом будет являться ключиком таблицы... Например название интерфейса. Тогда update будет таким: update ... set ip=3333 where мак=zzz and ip=ssss and interface='eth0' -- nexus в том то весь и геморой,что название интерфейса тоже одинаковое ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 12:13:18 |
|
||
|
Проблема со сравнением
|
|||
|---|---|---|---|
|
#18+
Мужики!!!! Эта проблема решаема вообще или нет,подскажите кто что может,я уже сплю и мне маки и айпишники снятся ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 12:48:58 |
|
||
|
Проблема со сравнением
|
|||
|---|---|---|---|
|
#18+
Может я что и не понимаю, но вот пришло из логов Код: plaintext 1. а в базе есть Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 13:55:51 |
|
||
|
Проблема со сравнением
|
|||
|---|---|---|---|
|
#18+
Michael PonomarevМожет я что и не понимаю, но вот пришло из логов Код: plaintext 1. а в базе есть Код: plaintext 1. 2. 3. в том то и дело,что в таком случае меняются 2 записи в базе у которых мак равен zzz т.е. будет следующее в базе: Код: plaintext 1. вторая проблема: когда я беру например из лога строчку N, которая равняется: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 14:10:22 |
|
||
|
Проблема со сравнением
|
|||
|---|---|---|---|
|
#18+
я вот что пытаюсь сказать упростим случай: пусть в логах есть только 1 строка с мак адресом ZZZ Код: plaintext т.е. Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 14:17:37 |
|
||
|
Проблема со сравнением
|
|||
|---|---|---|---|
|
#18+
Michael Ponomarevесть ли правило какую из строк таблицы надо поменять? первую, вторую или обе Ты же в данной предметной области работаешь, так что тебе самому лучше должно быть известно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 14:39:25 |
|
||
|
Проблема со сравнением
|
|||
|---|---|---|---|
|
#18+
Зашедший Michael Ponomarevесть ли правило какую из строк таблицы надо поменять? первую, вторую или обе Ты же в данной предметной области работаешь, так что тебе самому лучше должно быть известно. Упс, сори - не сразу понял, что автор темы - другой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 14:42:14 |
|
||
|
Проблема со сравнением
|
|||
|---|---|---|---|
|
#18+
При такой постановке вопроса и исходных данных можно только однозначно сказать что изменился один из IP для данного MAC, и делать update на таблицу нельзя потому что Вы не знаете какой из IP изменился. Делайте insert с новой парой MAC-IP (фактически получится история исменения IP для MAC адреса) и дальше думайте как это анализировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 15:02:29 |
|
||
|
Проблема со сравнением
|
|||
|---|---|---|---|
|
#18+
Michael Ponomarevя вот что пытаюсь сказать упростим случай: пусть в логах есть только 1 строка с мак адресом ZZZ Код: plaintext т.е. Код: plaintext 1. 2. 3. в данном случае будет менятся только одна строка, zzz 111, втрую трогать не нужно т.к. есть совпадение по маку и айпи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 15:32:24 |
|
||
|
Проблема со сравнением
|
|||
|---|---|---|---|
|
#18+
Еще раз поясню: первый вариант самый простой: берем первую строку из файла: zzz 3333 в базе данных есть ОДНА строчка с таким маком zzz 222 айпишники не совпали--->обновляем айпишник на 3333 берем вторую строчку из файла, и вот самое интересное,пришла такая вот строка: zzz 222 в базе такого айпи адреса уже нету, потому что он обновился в первом случае на айпи 3333, а раз нету,он снова ему делает апдейт и устанавливает айпишник 222,вот такая вот канитель второй вариант: когда в базе несколько строк с одинаковым маком, тут вообще жопа наступает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 15:56:38 |
|
||
|
Проблема со сравнением
|
|||
|---|---|---|---|
|
#18+
peter6636Еще раз поясню: первый вариант самый простой: берем первую строку из файла: zzz 3333 в базе данных есть ОДНА строчка с таким маком zzz 222 айпишники не совпали--->обновляем айпишник на 3333 берем вторую строчку из файла, и вот самое интересное,пришла такая вот строка: zzz 222 в базе такого айпи адреса уже нету, потому что он обновился в первом случае на айпи 3333, а раз нету,он снова ему делает апдейт и устанавливает айпишник 222,вот такая вот канитель второй вариант: когда в базе несколько строк с одинаковым маком, тут вообще жопа наступает Жопа наступает из-за отсутствия формальных требований. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 16:21:10 |
|
||
|
Проблема со сравнением
|
|||
|---|---|---|---|
|
#18+
Хорошо, а если пришло zzz 111, а базе есть zzz 222 zzz 333 что обновлять? может все-таки дополнительная таблица истории? ведь в лог в хронологическом порядке пишется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 16:52:47 |
|
||
|
Проблема со сравнением
|
|||
|---|---|---|---|
|
#18+
Michael PonomarevХорошо, а если пришло zzz 111, а базе есть zzz 222 zzz 333 что обновлять? может все-таки дополнительная таблица истории? ведь в лог в хронологическом порядке пишется. в таком случае он обновит 2 строчки,и инфа будет утеряна, нужен какой-то ключик, только хз куда его прикрутить. Скорее всего таблица нужна,но как именно в таком случае делать,голова уже не варит совсем нафиг, пойду напьюсь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 17:55:57 |
|
||
|
Проблема со сравнением
|
|||
|---|---|---|---|
|
#18+
если подумать таблица1: ID, CODE ID - первичный ключ для таблица1 CODE - шифр таблица2: ID, CODE, MAC, IP, DATETIME ID - таблица2 CODE - шифр из таблица1 MAC, IP - понятно DATETIME - время вставки чем не подходит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 18:03:00 |
|
||
|
Проблема со сравнением
|
|||
|---|---|---|---|
|
#18+
peter6636 в таком случае он обновит 2 строчки,и инфа будет утеряна, нужен какой-то ключик, только хз куда его прикрутить. Скорее всего таблица нужна,но как именно в таком случае делать,голова уже не варит совсем нафиг, пойду напьюсь Вам уже сказали что при 2 записях в таблице вы не можете определить какой из адресов изменился, например 1. получен IP1 2. получен IP2 3. IP1 изменился на IP3 4. IP3 изменился на IP4 5. IP4 изменился на IP1 и т.д. получается что IP2 не изменялся ни разу, а Вы никак не можете определить какой из начальных адресов (IP1, IP2) менялся, здесь даже история Вам мало чем поможет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 18:09:38 |
|
||
|
Проблема со сравнением
|
|||
|---|---|---|---|
|
#18+
G. peter6636 в таком случае он обновит 2 строчки,и инфа будет утеряна, нужен какой-то ключик, только хз куда его прикрутить. Скорее всего таблица нужна,но как именно в таком случае делать,голова уже не варит совсем нафиг, пойду напьюсь Вам уже сказали что при 2 записях в таблице вы не можете определить какой из адресов изменился, например 1. получен IP1 2. получен IP2 3. IP1 изменился на IP3 4. IP3 изменился на IP4 5. IP4 изменился на IP1 и т.д. получается что IP2 не изменялся ни разу, а Вы никак не можете определить какой из начальных адресов (IP1, IP2) менялся, здесь даже история Вам мало чем поможет нет никак ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2006, 18:12:19 |
|
||
|
Проблема со сравнением
|
|||
|---|---|---|---|
|
#18+
Надеюсь все-таки есть выход из этой ситуации ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2006, 14:17:43 |
|
||
|
Проблема со сравнением
|
|||
|---|---|---|---|
|
#18+
peter6636Надеюсь все-таки есть выход из этой ситуации Выход состоит в пересмотре постановки задачи в соответствии с предметной областью. Если у тебя нет однозначного ключа соотвествия - задача сводится к "в нашем дворе живут 50 мальчишек, один из них позвонил ко мне в дверь и убежал, как определить какого цвета кепка была у него на голове?" :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2006, 14:36:25 |
|
||
|
Проблема со сравнением
|
|||
|---|---|---|---|
|
#18+
G.При такой постановке вопроса и исходных данных можно только однозначно сказать что изменился один из IP для данного MAC, и делать update на таблицу нельзя потому что Вы не знаете какой из IP изменился. Делайте insert с новой парой MAC-IP (фактически получится история исменения IP для MAC адреса) и дальше думайте как это анализировать.! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2006, 16:32:43 |
|
||
|
Проблема со сравнением
|
|||
|---|---|---|---|
|
#18+
Придумал, осталось закодить это все ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2006, 09:36:12 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=34137084&tid=2147459]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
169ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 183ms |
| total: | 443ms |

| 0 / 0 |
