How do i provide password for su command while using net/telnet inruby


A

Amit Tomar

Hii all ,
Am using Net/TELNET to connect to remote host trying to run su
command in order to get root privilage this is how i doing


require 'net/telnet'
localhost = Net::Telnet::new("Host" => "192.147.217.27",
"Timeout" => 50,
"Prompt" => /[$%#>] \z/n)
localhost.login("dvsdkrp", "dvsdkvrp") { |c| print c }
localhost.cmd("cd /home/dvsdkrp/workdir/smruti") { |c| print c }
localhost.cmd("su") { |c| print c }
localhost.puts("passwd"){ |c| print c }

But am getting this error

Password: C:/Ruby/lib/ruby/1.8/net/telnet.rb:552:in `waitfor': timed out
while waiting for more data (Timeout::Error)
from C:/Ruby/lib/ruby/1.8/net/telnet.rb:679:in `cmd'
from tel.rb:7

What should i do??
 
Ad

Advertisements

R

Ryan Davis

Am using Net/TELNET to connect to remote host trying to run = su
command in order to get root privilage this is how i doing

Please tell me/us that this isn't across an unsecured network. =
Otherwise, you should switch from telnet to ssh.
 
A

Amit Tomar

Ryan Davis wrote in post #950107:
Please tell me/us that this isn't across an unsecured network.
Otherwise, you should switch from telnet to ssh.

Network security is not an issue for me and i just want to make su
command to work
 
D

Daniel Navarro

[Note: parts of this message were removed to make it a legal post.]

Well if you are timing out maybe try to thread it.

$ ruby <<EOF
thread = Thread.new { `sleep 5; echo \"Done.\"` }
puts "Waiting on telnet to catch it's slow ass up."
puts thread.value
EOF
Waiting on the thread...
Done.
 
J

Jeremy Bopp

Hii all ,
Am using Net/TELNET to connect to remote host trying to run su
command in order to get root privilage this is how i doing


require 'net/telnet'
localhost = Net::Telnet::new("Host" => "192.147.217.27",
"Timeout" => 50,
"Prompt" => /[$%#>] \z/n)
localhost.login("dvsdkrp", "dvsdkvrp") { |c| print c }
localhost.cmd("cd /home/dvsdkrp/workdir/smruti") { |c| print c }
localhost.cmd("su") { |c| print c }
localhost.puts("passwd"){ |c| print c }

But am getting this error

Password: C:/Ruby/lib/ruby/1.8/net/telnet.rb:552:in `waitfor': timed out
while waiting for more data (Timeout::Error)
from C:/Ruby/lib/ruby/1.8/net/telnet.rb:679:in `cmd'
from tel.rb:7

What should i do??

I want to think that the problem here is that the su program expects to
have a terminal so that it can disable echoing what you type for your
password and then directly read that password. Driving a telnet session
like this does not emulate a terminal and could cause problems for su.
I would expect su to error out rather than cause a timeout though.

Are you able to configure sudo on that host? If so you can configure it
to allow your account to run the desired command(s) without a password
and then invoke sudo instead of su.

-Jeremy
 
A

Amit Tomar

Jeremy Bopp wrote in post #950260:
I want to think that the problem here is that the su program expects to
have a terminal so that it can disable echoing what you type for your
password and then directly read that password. Driving a telnet session
like this does not emulate a terminal and could cause problems for su.
I would expect su to error out rather than cause a timeout though.

Are you able to configure sudo on that host? If so you can configure it
to allow your account to run the desired command(s) without a password
and then invoke sudo instead of su.

-Jeremy

Hi Jeremy
You are right this is how i solved it

su_prompt = "Password: "
localhost.cmd("String" => "su", "Match" => /#{su_prompt}/) { |c| print
}
localhost.cmd("passwd")
Now its working fine
 
Ad

Advertisements

J

Jeremy Bopp

Jeremy Bopp wrote in post #950260:

Hi Jeremy
You are right this is how i solved it

su_prompt = "Password: "
localhost.cmd("String" => "su", "Match" => /#{su_prompt}/) { |c| print
}
localhost.cmd("passwd")
Now its working fine

Actually, your solution of looking for su's prompt and then sending the
password as a "command" proves that my assertion was mostly incorrect,
but I'm glad you found what you were looking for.

-Jeremy
 

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

Top