[lnkForumImage]
TotalShareware - Download Free Software

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


 

Forums >

comp.lang.ruby

Getting Ruby to output a windows command to text (log) file.

Tony Mcneil

9/17/2008 6:47:00 PM

Hey folks, I'm trying to create a program to ping one of my company's
computers every minute to measure latency, and output the results to a
text file. I've been able to figure out / cobble together most of what
I need (see attached ping.rb file) but the problem i'm having is I
cannot figure out how to get Ruby to copy the results from the ping to
the text file that is created.

What I get currently when I run the program (from the log file):
________________________________
Wed Sep 17 13:52:45 -0500 2008
System Ping Monitor:

Wed Sep 17 13:52:45 -0500 2008
________________________________

The "ping" command doesn't output the way I need it to, HALP!!

Attachments:
http://www.ruby-...attachment/27...

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

6 Answers

Erik Veenstra

9/17/2008 7:32:00 PM

0

See http://www.ruby-doc.org/core/classes/Kernel.ht... :

`cmd` =3D> string

Returns the standard output of running cmd in a subshell. The built-in
syntax %x{=85} uses this method. Sets $? to the process status.

`date` #=3D> "Wed Apr 9 08:56:30 CDT 2003\n"
`ls testdir`.split[1] #=3D> "main.rb"
`echo oops && exit 99` #=3D> "oops\n"
$?.exitstatus #=3D> 99

gegroet,
Erik V.

Ilan Berci

9/17/2008 7:52:00 PM

0

If you need to also get at stderr .. take a look at popen3

ilan


Tony Mcneil wrote:

> ________________________________
> Wed Sep 17 13:52:45 -0500 2008
> System Ping Monitor:
>
> Wed Sep 17 13:52:45 -0500 2008
> ________________________________
>
> The "ping" command doesn't output the way I need it to, HALP!!

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

Tony Mcneil

9/17/2008 7:55:00 PM

0

Thanks much Erik! I still need to study that link / see if I can figure
out exactly what that means, but that should work perfectly, thanks
again!
--
Posted via http://www.ruby-....

Tony Mcneil

9/17/2008 8:01:00 PM

0

Erik Veenstra wrote:
> See http://www.ruby-doc.org/core/classes/Kernel.ht... :
>
> `cmd` => string
>
> Returns the standard output of running cmd in a subshell. The built-in
> syntax %x{�} uses this method. Sets $? to the process status.
>
> `date` #=> "Wed Apr 9 08:56:30 CDT 2003\n"
> `ls testdir`.split[1] #=> "main.rb"
> `echo oops && exit 99` #=> "oops\n"
> $?.exitstatus #=> 99
>
> gegroet,
> Erik V.

hrm, I've tried looking over the documentation in the link you
provided, but I'm having difficulty understanding it. Could you provide
an example of the code?

thanks again,
~Tony
--
Posted via http://www.ruby-....

Siep Korteling

9/17/2008 9:31:00 PM

0

Tony Mcneil wrote:
> Erik Veenstra wrote:
>> See http://www.ruby-doc.org/core/classes/Kernel.ht... :
>>
>> `cmd` => string
>>
>
> hrm, I've tried looking over the documentation in the link you
> provided, but I'm having difficulty understanding it. Could you provide
> an example of the code?
>
> thanks again,
> ~Tony

This won't work (even when you remove the typo .to_S):
f.puts system('ping 192.168.1.74').to_S

The ping will be executed, but you are logging if it succeeded, not the
output.
Erik is pointing to a working solution:

f.puts `ping 192.168.1.74`

Note these `` are backticks, not single quotes.

hth,

Siep

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

Tony Mcneil

9/18/2008 1:38:00 PM

0

> This won't work (even when you remove the typo .to_S):
> f.puts system('ping 192.168.1.74').to_S
>
> The ping will be executed, but you are logging if it succeeded, not the
> output.
> Erik is pointing to a working solution:
>
> f.puts `ping 192.168.1.74`
>
> Note these `` are backticks, not single quotes.
>
> hth,
>
> Siep


Thank you! that was the bit that made the difference (backtick instead
of quote) The .to_S was more of an experiment that I forgot to pull
immediately :)

thanks for all your help everyone!
--
Posted via http://www.ruby-....