Forum: Ruby Re: Running consecutive DOS commands in Ruby

Posted by Srinidhi (Guest)
on 2010-09-02 13:39
(Received via mailing list)
Hello Everyone,

I have a situation where  i have to invoke command line tools like
putty_sftp and OpenSSH from ruby script for automation, as out
application handles sftp uploads through these tools.
So the problem is i can single DOS command in ruby and store the
output(using system( ),exec( )), but here were are talking abt
multiple DOS commands to achieve the goal.
Also i have to pick up values like user id and password from excel
file(which i am doing using ruby).I have to know how to pass these
value to DOS batch file from ruby.

It would be a boon if i can all the DOS commands in my ruby program
one by one, so it's easy to parametrize variables without much.
Please help me in this regard.................Thanks
Posted by Robert Klemme (Guest)
on 2010-09-02 14:50
(Received via mailing list)
On Thu, Sep 2, 2010 at 1:35 PM, Srinidhi <srinidhi158@gmail.com> wrote:
> It would be a boon if i can all the DOS commands in my ruby program
> one by one, so it's easy to parametrize variables without much.

What version of DOS are we talking about?  Do current versions of Ruby
run on DOS at all?

In case you happen on a POSIX system you could use IO.popen to start a
shell (say "/bin/sh"), issue commands and use Ruby's expect call to
evaluate output / replies.  You could as well create a script in
memory and feed it to the shell in one go but then you cannot react on
command outputs or have to generate the decision logic into the
script.

Kind regards

robert
Posted by David Masover (Guest)
on 2010-09-02 17:41
(Received via mailing list)
On Thursday, September 02, 2010 06:35:33 am Srinidhi wrote:
> I have a situation where  i have to invoke command line tools like
> putty_sftp and OpenSSH from ruby script for automation, as out
> application handles sftp uploads through these tools.

Would net-ssh work?

http://net-ssh.rubyforge.org/

> So the problem is i can single DOS command in ruby

No you can't.

http://en.wikipedia.org/wiki/DOS

You probably mean:

http://en.wikipedia.org/wiki/Command_Prompt

> here were are talking abt
> multiple DOS commands to achieve the goal.

So what's hard about that?

system('command1', a, b, c)
system('command2', d, e, f)

> Also i have to pick up values like user id and password from excel
> file(which i am doing using ruby).I have to know how to pass these
> value to DOS batch file from ruby.

This sounds like it's an NT batch question almost as much as a Ruby 
question.
Since you're talking about id and password, I'd strongly recommend using
environment variables. If Windows works the way Unix does here, you 
should be
able to do something like:

ENV['USER_ID'] = 'foo'
ENV['PASSWORD'] = 'bar'

Then, from your batch file, refer to them as:

%USER_ID%
%PASSWORD%

This is much more secure than, for example, putting them in the 
commandline.
But you want to make sure you clear those if you're going to be running 
other
commands which don't need them.

> It would be a boon if i can all the DOS commands in my ruby program
> one by one,

Sounds like you don't need to run them in parallel. What's the problem 
again?
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.