Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

хэши в Перл

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Unix
Предыдущая тема :: Следующая тема  
Автор Сообщение
omar



Зарегистрирован: 22.01.2004
Сообщения: 99
Откуда: г.К-Чепецк

СообщениеДобавлено: Пт Фев 25 2005 12:00    Заголовок сообщения: хэши в Перл Ответить с цитатой

помогите плиз!!!
Пост конечно не совсем туда .. но могет кто нить подскажет

есть хэш:
%userы = ("1.2.3.4" => "MAN",
"1.2.3.5" => "User1");

и есть прогу которая выбирает все IP из файлика и запихивает в переменную. Для проверки и подстановки пишу так:
while(($k,$v)=each(%users))
{
# print "$src это print $k"
if ( $src == $k )
{
print "$k is $src\n";
}
else
{
$src = $src;
}
}
где $src это IP
скажем если отдельно выводить через принт примерно так:
print "$src это print $k"
получим
1.2.3.4 это 1.2.3.4
а такая конструкция через IF не работает ... почему так?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
DmitriyS



Зарегистрирован: 19.06.2002
Сообщения: 381
Откуда: Е-бург

СообщениеДобавлено: Пт Фев 25 2005 13:38    Заголовок сообщения: Ответить с цитатой

Ты лучше напиши что именно ты хочешь сделать... я так и не понял...
ты для каждого $src будешь весь %userы перебирать?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
omar



Зарегистрирован: 22.01.2004
Сообщения: 99
Откуда: г.К-Чепецк

СообщениеДобавлено: Пт Фев 25 2005 15:03    Заголовок сообщения: хеши Ответить с цитатой

ОК. Вот проблема есть роутер с настроеннным файерволлом, который ведет лог примерно такой:
Фев 22 25.02.05 INPUT DROP: SRC=1.2.3.4 DST=10.10.10.10 SPT=22 DPT=22 PROTO=TCP ....

И есть скрипт на перле который разбирает все эти строки...
Есть список клиентов с конкретными IP и именами.
И надо сделать так чтобы вместо IP вставлялось имя а не IP
вот я и хотел сделать это через ассоциативный массив
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
DmitriyS



Зарегистрирован: 19.06.2002
Сообщения: 381
Откуда: Е-бург

СообщениеДобавлено: Пт Фев 25 2005 15:23    Заголовок сообщения: Ответить с цитатой

допустим $users{'192.168.0.2'}="User1" (и т.д.) т.е. имеем хеш.

открываем лог
open(LOG,"</path/to/log");

while($line=<LOG>)
{
$line=~/.*SRC=(\d+\.\d+\.\d+\.\d+)\sDST.*/; # или так /.*SRC=(\S+)\sDST.*/
$src_ip=$1;
$user_name=$users{$src_ip};
if ($user_name eq '') {$user_name="Незнакомец!"}
$line=s/$src_ip/$user_name/;
print "$line";
}


Вот вроде и всё. На счёт регулярного выражения - если у тебя такой лог как ты написал, то должно работать. Никаких ненужных переборов в циклах... Ну, можно сделать и элегантнее разумеется...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
omar



Зарегистрирован: 22.01.2004
Сообщения: 99
Откуда: г.К-Чепецк

СообщениеДобавлено: Пт Фев 25 2005 16:36    Заголовок сообщения: спасибо... Ответить с цитатой

Very Happy
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Unix Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...