[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Net::Telnet

Marcin Tyman

6/20/2007 9:41:00 AM

I've got an issue with following code:

<code>
t.cmd('String' => "iptables -t mangle -L", 'Match' => /\#/, 'Timeout' =>
15 )
{ |c|

print c
sleep 1 #THIS IS AN ISSUE I CAN'T UNDERSTAND

if c =~ patternDup #patternDup is RegExp object
rtrnMsg = "DUPLICATED"
iptblsLog.info(c.to_s)
elsif c =~ patternRules #patternRules is RegExp object
rtrnMsg = "RULES"
iptblsLog.info(c.to_s)
else
rtrnMsg = "NO RULES"
iptblsLog.info(c.to_s)
end #if

}
</code>

Without sleep sometimes comparison c with particular RegExp doesn't
work. It isn't due to that regular expression doesn't match string
compared with.
After adding the sleep everything works well.

Please, help me to understand it. Why adding sleep resolved this issue.
Thanks in advance.

--
Posted via http://www.ruby-....

2 Answers

Alex Young

6/20/2007 10:03:00 AM

0

Marcin Tyman wrote:
> I've got an issue with following code:
>
> <code>
> t.cmd('String' => "iptables -t mangle -L", 'Match' => /\#/, 'Timeout' =>
> 15 )
> { |c|
>
> print c
> sleep 1 #THIS IS AN ISSUE I CAN'T UNDERSTAND
>
> if c =~ patternDup #patternDup is RegExp object
> rtrnMsg = "DUPLICATED"
> iptblsLog.info(c.to_s)
> elsif c =~ patternRules #patternRules is RegExp object
> rtrnMsg = "RULES"
> iptblsLog.info(c.to_s)
> else
> rtrnMsg = "NO RULES"
> iptblsLog.info(c.to_s)
> end #if
>
> }
> </code>
>
> Without sleep sometimes comparison c with particular RegExp doesn't
> work. It isn't due to that regular expression doesn't match string
> compared with.
> After adding the sleep everything works well.
It sounds to me like either c or the regexp are modified by a different
thread, but without knowing where they come from (or, indeed, what t is
and what cmd is supposed to yield), it's difficult to guess any more...

--
Alex

Marcin Tyman

6/20/2007 11:09:00 AM

0

Alex Young wrote:
> Marcin Tyman wrote:
>> if c =~ patternDup #patternDup is RegExp object
>> }
>> </code>
>>
>> Without sleep sometimes comparison c with particular RegExp doesn't
>> work. It isn't due to that regular expression doesn't match string
>> compared with.
>> After adding the sleep everything works well.
> It sounds to me like either c or the regexp are modified by a different
> thread, but without knowing where they come from (or, indeed, what t is
> and what cmd is supposed to yield), it's difficult to guess any more...

It's impossible that it is due to modification of c variable in other
thread. This is local variable. So the regexp's.
t is a Net::Telnet object. And I don't know what cmd is supposed to
yield. Need to look into telnet.rb(???)

--
Posted via http://www.ruby-....