diff options
author | root <oh@onsteroids.net> | 2017-02-07 16:38:47 +0100 |
---|---|---|
committer | root <oh@onsteroids.net> | 2017-02-16 13:30:46 +0100 |
commit | 98c7fc45c983b9e424e32bc2f426e395e1ec98bc (patch) | |
tree | 6a4513b46d81fcc31a5dac7ba03caba7d213f792 /lib/oxidized | |
parent | 84921f07587efe8c92f3e4576ba6ac016b33a951 (diff) |
added tplink model
Diffstat (limited to 'lib/oxidized')
-rw-r--r-- | lib/oxidized/model/tplink.rb | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/lib/oxidized/model/tplink.rb b/lib/oxidized/model/tplink.rb new file mode 100644 index 0000000..9286ea4 --- /dev/null +++ b/lib/oxidized/model/tplink.rb @@ -0,0 +1,65 @@ +class TPLink < Oxidized::Model + + # tp-link prompt + prompt /^\r?([\w.@()-]+[#>]\s?)$/ + comment '! ' + + # handle paging + # workaround for sometimes missing whitespaces with "\s?" + expect /Press\s?any\s?key\s?to\s?continue\s?\(Q\s?to\s?quit\)/ do |data, re| + send ' ' + data.sub re, '' + end + + # send carriage return because \n with the command is not enough + # checks if line ends with prompt >,# or \r,\nm otherwise send \r + expect /[^>#\r\n]$/ do |data, re| + send "\r" + data.sub re, '' + end + + cmd :all do |cfg| + # normalize linefeeds + cfg.gsub! /(\r|\r\n|\n\r)/,"\n" + # remove empty lines + cfg.each_line.reject { |line| line.match /^[\r\n\s\u0000#]+$/ }.join + end + + cmd :secret do |cfg| + cfg.gsub! /^(snmp-server community).*/, '\\1 <configuration removed>' + cfg.gsub! /secret (\d+) (\S+).*/, '<secret hidden>' + cfg + end + + cmd 'show system-info' do |cfg| + comment cfg.each_line.to_a[3..-3].join + end + + cmd 'show running-config' do |cfg| + lines = cfg.each_line.to_a[1..-1] + # cut config after "end" + lines[0..lines.index("end\n")].join + end + + cfg :telnet, :ssh do + username /^User ?[nN]ame:/ + password /^\r?Password:/ + end + + cfg :telnet, :ssh do + if vars :enable + post_login do + send "enable\r" + send vars(:enable) + "\r" + end + end + + pre_logout do + send "exit\r" + send "logout\r" + end + + end + +end + |