[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