Connecting to Cisco device using Ruby

P

Peny Swain

Hi,

I'm new to Ruby and want to use Ruby for my automation.I'm trying out a
small program now.Basically, what I'm trying to do is:

1)Connect to the cisco switch via terminal server which has a public IP
address and a port number. (I'm using a fake ip here).

2)Login to the switch giving the right username and password.

3)After login, issue a switch command and get the output back.


The below program works if I comment out the "waitfor" but not
consistent and other times it fails.Can someone please point out whats
the issue here or if possible can someone share the piece of code that
does the above task.


Thanks
s_k





require 'net/telnet'
require 'socket'

localhost = Net::Telnet::new(
"Host" => "10.10.10.20",
"Port" => 2033,
"Binmode" => true,
"Output_log" => 'c:\RubyL\output.txt',
# "Dump_log" => "dump_log",
"Prompt" => /[$%#>:] \z/n,
"Telnetmode" => true,
"Timeout" => 50,
"Waittime" => 30
# "Proxy" => proxy
) { |c| print c }


localhost.cmd("\r") {|c| print c }

if localhost.waitfor({"Match" => 'vcctest-30-6k>' , "Timeout" => 50})
localhost.cmd("\r enable \r"){|c| print c }
localhost.cmd("cisco"){|c| print c }
else
begin

# Adding username and password
localhost.waitfor({"Match" => 'Username:' , "Timeout" => 50})
localhost.cmd("cisco"){|c| print c }
localhost.waitfor({"Match" => 'Password:' , "Timeout" => 50})
localhost.cmd("cisco"){|c| print c }
rescue Exception => e
puts e.message
retry
#Adding enable password
localhost.waitfor({"Match" => 'vcctest-30-6k>' , "Timeout" =>
50})
localhost.cmd("\r enable \r"){|c| print c }
localhost.cmd("cisco"){|c| print c }
localhost.cmd("exit"){|c| print c }

ensure
localhost.close

end
end
 
P

Peny Swain

Peter said:

Thanks Peter.It worked.Heres's what I did:



t = Net::Telnet::new( "Host" => "10.10.10.20","Port" => 2044,"Timeout"
=> 20, "Output_log" => 'c:\RubyL\output.txt',
"Telnetmode"=> true,"Waittime"=>2) {|c| print c }

log = lambda{ |c| STDERR.print c }

#needs initial enter to bring the username promt
t.puts("\r")

t.waitfor(/Username:/, &log)
t.puts("cisco")
t.waitfor(/Password:/, &log)
t.puts("cisco")

t.waitfor(/vcctest-30-6k>/, &log)
t.puts("enable")
t.waitfor(/Password:/, &log)
t.puts("cisco")
t.waitfor(/vcctest-30-6k#/, &log)
t.puts("exit")
t.cmd(""){|c| print c}
 

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

Forum statistics

Threads
473,961
Messages
2,570,130
Members
46,689
Latest member
liammiller

Latest Threads

Top