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

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

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

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.

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-forum.com/\.

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-forum.com/.

Erik Veenstra wrote:

See module Kernel - RDoc Documentation :

  `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-forum.com/\.

Tony Mcneil wrote:

Erik Veenstra wrote:

See module Kernel - RDoc Documentation :

  `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-forum.com/\.

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 :slight_smile:

thanks for all your help everyone!

···

--
Posted via http://www.ruby-forum.com/\.