Asp Forum
Home
|
Login
|
Register
|
Search
Forums
>
comp.lang.ruby
Connecting to Cisco device using Ruby
Peny Swain
2/26/2009 7:57:00 PM
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
--
Posted via
http://www.ruby-...
.
2 Answers
Peter Booth
2/26/2009 8:27:00 PM
0
Did you see
http://groups.google.com/group/ruby-talk-google/browse_thread/thread/096cab...
?
On Feb 26, 2009, at 2:57 PM, Peny Swain wrote:
> 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
> --
> Posted via
http://www.ruby-...
.
>
Peny Swain
2/27/2009 1:21:00 AM
0
Peter Booth wrote:
> Did you see
>
http://groups.google.com/group/ruby-talk-google/browse_thread/thread/096cab...
> ?
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}
--
Posted via
http://www.ruby-...
.
Servizio di avviso nuovi messaggi
Ricevi direttamente nella tua mail i nuovi messaggi per
Connecting to Cisco device using Ruby
Inserendo la tua e-mail nella casella sotto, riceverai un avviso tramite posta elettronica ogni volta che il motore di ricerca troverà un nuovo messaggio per te
Il servizio è completamente GRATUITO!
x
Login to ForumsZone
Login with Google
Login with E-Mail & Password