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

Sergei Olonichev olonichev at scnsoft.com
Fri Apr 25 13:36:51 MSD 2003


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.










More information about the Ruby mailing list