[Ruby] Re: [Ruby] Re: [Ruby] Re: [Ruby] Re: [Ruby] IO.popen("cmd").readlines.grep(/str/) оставляет зомби

Anton Farygin rider at altlinux.com
Fri Apr 25 15:26:05 MSD 2003


Sergei Olonichev пишет:
> Alexander Bokovoy wrote:
> 
>> On Fri, Apr 25, 2003 at 12:14:29PM +0300, Sergei Olonichev wrote:
>>  
>>
>>>>> 1. А почему нельзя использовать стандартный grep? Зачем изобретать
>>>>> велосипеды?
>>>>> 2. Наверное вы хотели написать /192[.]168[.]1[.]244/ а не 
>>>>> /192.168.1.244/ ?
>>>>>
>>>>> ipt=IO::popen("iptables -nvL FORWARD | grep /192[.]168[.]1[.]244/")
>>>>>  
>>>>>
>>>>>       
>>>>
>>>> Системный греп не подходит,поскольку iptables|grep придется  
>>>> вызывать на каждый ИП-адрес.
>>>> А так я все считываю в буфер и разбираю уже средствами руби.быстрее 
>>>> получается.
>>>>
>>>>
>>>>     
>>>
>>> Если у вас много ip адресов то оба эти метода практически одинаково 
>>> неэффективны.
>>>
>>> Я бы посоветовал :
>>>
>>> 1. построить _одно_ регулярное выражение для _всех_ ip адресов, а 
>>> потом запускать iptables + grep (egrep).
>>> 2. в руби просто строить hash: ip->info для всех возращаемых ip адресов
>>>
>>> Тогда вам не придеться запускать пайп для каждого адреса.
>>>   
>>
>> А зачем вообще запускать внешний grep? Сергей, ты не объяснишь мне, что
>> такое реально лучшее от этого будет?
>>  
>>
> По-моему так поще - потому что эту команду можно отладить отдельно от 
> всей программы.
> А во-вторых я не вижу ничего плохого в использовании стандартных средств 
> совместно с Ruby.

Это несколько не вместе.

Т.е. - получается, что для того, что бы получить набор данных по нужному 
нам списку IP адресов мы должны:

1) Сформировать большое регулярное выражение
2) открыть pipe на grep
3) Забрать оттуда данные

Вариант, который обсуждался ранее:

1) Открыть pipe на iptables
2) читать из pipe, обрабатывая регулярным выражением для каждого адреса 
из списка

Мне кажется второй вариант несколько проще и быстрее.

Rgds,
Rider

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 252 bytes
Desc: not available
Url : /pipermail/ruby/attachments/20030425/5452d3a0/attachment-0001.bin


More information about the Ruby mailing list