diff options
| author | Saku Ytti <saku@ytti.fi> | 2014-03-05 13:54:36 +0200 | 
|---|---|---|
| committer | Saku Ytti <saku@ytti.fi> | 2014-03-05 13:54:36 +0200 | 
| commit | f8be9c5a3597768128d70209daf4d40e527a7880 (patch) | |
| tree | 656a61bee97b11e022fa0d27be38f059c146e18f /lib/oxidized/input | |
| parent | 91abe312526e3bd0cd4927209dbff53976393dde (diff) | |
Add AireOS support
Crappy Cisco WLC 5k, much quality, very implementation, such secure
* stop pre_logout from expecting prompt by default
Diffstat (limited to 'lib/oxidized/input')
| -rw-r--r-- | lib/oxidized/input/cli.rb | 12 | ||||
| -rw-r--r-- | lib/oxidized/input/ssh.rb | 17 | ||||
| -rw-r--r-- | lib/oxidized/input/telnet.rb | 8 | 
3 files changed, 25 insertions, 12 deletions
| diff --git a/lib/oxidized/input/cli.rb b/lib/oxidized/input/cli.rb index ab93b06..2e6ac35 100644 --- a/lib/oxidized/input/cli.rb +++ b/lib/oxidized/input/cli.rb @@ -5,6 +5,7 @@ module Oxidized        def initialize          @post_login = []          @pre_logout = [] +        @username, @password, @exec = nil        end        def get @@ -15,7 +16,7 @@ module Oxidized        end        def disconnect_cli -        @pre_logout.each { |command, block| block ? block.call : (cmd command) } +        @pre_logout.each { |command, block| block ? block.call : (cmd command, nil) }        end        def post_login _post_login=nil, &block @@ -29,6 +30,15 @@ module Oxidized            @pre_logout <<  [_pre_logout, block]          end        end + +      def username re=/^(Username|login)/ +        @username or @username = re +      end + +      def password re=/^Password/ +        @password or @password = re +      end +      end    end  end diff --git a/lib/oxidized/input/ssh.rb b/lib/oxidized/input/ssh.rb index a0a5916..ef15292 100644 --- a/lib/oxidized/input/ssh.rb +++ b/lib/oxidized/input/ssh.rb @@ -23,7 +23,10 @@ module Oxidized        @ssh = Net::SSH.start @node.ip, @node.auth[:username],                              :password => @node.auth[:password], :timeout => CFG.timeout,                              :paranoid => secure -      open_shell @ssh unless @exec +      unless @exec +        shell_open @ssh +        @username ? shell_login : expect(@node.prompt) +      end        @ssh and not @ssh.closed?      end @@ -55,7 +58,7 @@ module Oxidized        end      end -    def open_shell ssh +    def shell_open ssh        @ses = ssh.open_channel do |ch|          ch.on_data do |ch, data|            @output << data @@ -68,7 +71,15 @@ module Oxidized            end          end        end -      expect @node.prompt +    end + +    # Cisco WCS has extremely dubious SSH implementation, SSH auth is always +    # success, it always opens shell and then run auth in shell. I guess +    # they'll never support exec() :) +    def shell_login +      expect username +      cmd @node.auth[:username], password +      cmd @node.auth[:password]      end      def exec state=nil diff --git a/lib/oxidized/input/telnet.rb b/lib/oxidized/input/telnet.rb index 26df113..84d9877 100644 --- a/lib/oxidized/input/telnet.rb +++ b/lib/oxidized/input/telnet.rb @@ -48,14 +48,6 @@ module Oxidized        end      end -    def username re=/^(Username|login)/ -      @username or @username = re -    end - -    def password re=/^Password/ -      @password or @password = re -    end -    end  end | 
