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 
thanks for all your help everyone!
···
--
Posted via http://www.ruby-forum.com/\.