summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--extra/rest_client.rb4
-rw-r--r--lib/oxidized/input/ssh.rb2
-rw-r--r--lib/oxidized/input/telnet.rb2
-rw-r--r--lib/oxidized/model/ios.rb14
-rw-r--r--lib/oxidized/nodes.rb28
5 files changed, 32 insertions, 18 deletions
diff --git a/extra/rest_client.rb b/extra/rest_client.rb
index 88daeae..19f2439 100644
--- a/extra/rest_client.rb
+++ b/extra/rest_client.rb
@@ -6,9 +6,9 @@ module Oxidized
PORT = 8888
class << self
- def next node, opt={}, host=HOST, port=PORT
+ def next opt={}, host=HOST, port=PORT
web = new host, port
- web.next node, opt
+ web.next opt
end
end
diff --git a/lib/oxidized/input/ssh.rb b/lib/oxidized/input/ssh.rb
index c0594db..dc90354 100644
--- a/lib/oxidized/input/ssh.rb
+++ b/lib/oxidized/input/ssh.rb
@@ -39,7 +39,7 @@ module Oxidized
disconnect_cli
@ssh.loop
@ssh.close if not @ssh.closed?
- rescue Net::SSH::Disconnect
+ rescue Errno::ECONNRESET, Net::SSH::Disconnect
end
end
diff --git a/lib/oxidized/input/telnet.rb b/lib/oxidized/input/telnet.rb
index c4c8bab..26755ca 100644
--- a/lib/oxidized/input/telnet.rb
+++ b/lib/oxidized/input/telnet.rb
@@ -17,7 +17,7 @@ module Oxidized
expect password
@telnet.puts @node.auth[:password]
expect @node.prompt
- rescue Timeout::Error, Errno::ECONNREFUSED, Errno::ECONNRESET, Errno::EHOSTUNREACH
+ rescue Timeout::Error, Errno::ECONNREFUSED, Errno::ECONNRESET, Errno::EPIPE, Errno::EHOSTUNREACH
return false
end
end
diff --git a/lib/oxidized/model/ios.rb b/lib/oxidized/model/ios.rb
index 3fcc7ae..a216126 100644
--- a/lib/oxidized/model/ios.rb
+++ b/lib/oxidized/model/ios.rb
@@ -23,7 +23,11 @@ class IOS < Oxidized::Model
cmd 'show running-config' do |cfg|
cfg = cfg.each_line.to_a[3..-1].join
+ cfg.gsub! /^Current configuration : [^\n]*\n/, ''
cfg.sub! /^(ntp clock-period).*/, '! \1'
+ cfg.gsub! /^\ tunnel\ mpls\ traffic-eng\ bandwidth[^\n]*\n*(
+ (?:\ [^\n]*\n*)*
+ tunnel\ mpls\ traffic-eng\ auto-bw)/mx, '\1'
cfg
end
@@ -40,10 +44,12 @@ class IOS < Oxidized::Model
post_login 'terminal length 0'
post_login 'terminal width 0'
# preferred way to handle additional passwords
- #post_login do
- # send "enable\n"
- # send CFG.vars[:enable] + "\n"
- #end
+ if CFG.vars[:enable] and CFG.vars[:enable] != ''
+ post_login do
+ send "enable\n"
+ send CFG.vars[:enable] + "\n"
+ end
+ end
pre_logout 'exit'
end
diff --git a/lib/oxidized/nodes.rb b/lib/oxidized/nodes.rb
index d878d89..affeea8 100644
--- a/lib/oxidized/nodes.rb
+++ b/lib/oxidized/nodes.rb
@@ -1,6 +1,7 @@
module Oxidized
require 'oxidized/node'
class Oxidized::NotSupported < StandardError; end
+ class Oxidized::NodeNotFound < StandardError; end
class Nodes < Array
attr_accessor :source
alias :put :unshift
@@ -20,21 +21,18 @@ module Oxidized
def list
map { |e| e.name }
end
- def find_index node
- index { |e| e.name == node }
- end
def show node
- i = find_index node
- self[i].serialize if i
+ i = find_node_index node
+ self[i].serialize
end
def fetch node, group
- raise Oxidized::NotSupported unless Oxidized.mgr.output.respond_to? :fetch
- i = find_index node
- self[i].output.new.fetch node, group
+ i = find_node_index node
+ output = self[i].output.new
+ raise Oxidized::NotSupported unless output.respond_to? :fetch
+ output.fetch node, group
end
def del node
- i = find_index node
- delete_at i if i
+ delete_at find_node_index
end
# @param node [String] name of the node moved into the head of array
def next node, opt={}
@@ -52,5 +50,15 @@ module Oxidized
def get
(self << shift).last
end
+
+ private
+
+ def find_index node
+ index { |e| e.name == node }
+ end
+
+ def find_node_index node
+ find_index node or raise Oxidized::NodeNotFound
+ end
end
end