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

T

Tony Mcneil

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-forum.com/attachment/2708/ping.rb
 
E

Erik Veenstra

See http://www.ruby-doc.org/core/classes/Kernel.html#M006001 :

`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.
 
T

Tony Mcneil

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!
 
T

Tony Mcneil

Erik said:
See http://www.ruby-doc.org/core/classes/Kernel.html#M006001 :

`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
 
S

Siep Korteling

Tony said:
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
 
T

Tony Mcneil

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!
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,995
Messages
2,570,230
Members
46,819
Latest member
masterdaster

Latest Threads

Top