Advertisement
Guest User

Untitled

a guest
May 22nd, 2018
186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 2.45 KB | None | 0 0
  1. class QTECH_NOS < Oxidized::Model
  2.  
  3.   prompt /^([\w.@()-]+[#>]\s?)$/
  4.   comment  '! '
  5.  
  6.   # example how to handle pager
  7.   #expect /^\s--More--\s+.*$/ do |data, re|
  8.   #  send ' '
  9.   #  data.sub re, ''
  10.   #end
  11.  
  12.   # non-preferred way to handle additional PW prompt
  13.   #expect /^[\w.]+>$/ do |data|
  14.   #  send "enable\n"
  15.   #  send vars(:enable) + "\n"
  16.   #  data
  17.   #end
  18.  
  19.   cmd :all do |cfg|
  20.     #cfg.gsub! /\cH+\s{8}/, ''         # example how to handle pager
  21.     #cfg.gsub! /\cH+/, ''              # example how to handle pager
  22.     # get rid of errors for commands that don't work on some devices
  23.     cfg.gsub! /^% Invalid input detected at '\^' marker\.$|^\s+\^$/, ''
  24.     cfg.each_line.to_a[1..-2].join
  25.   end
  26.  
  27.   cmd :secret do |cfg|
  28.     cfg.gsub! /^(snmp-server community).*/, '\\1 <configuration removed>'
  29.     cfg.gsub! /^(username \S+ privilege \d+) (\S+).*/, '\\1 <secret hidden>'
  30.     cfg.gsub! /^(username \S+ password \d) (\S+)/, '\\1 <secret hidden>'
  31.     cfg.gsub! /^(username \S+ secret \d) (\S+)/, '\\1 <secret hidden>'
  32.     cfg.gsub! /^(enable (password|secret) \d) (\S+)/, '\\1 <secret hidden>'
  33.     cfg.gsub! /^(\s+(?:password|secret)) (?:\d )?\S+/, '\\1 <secret hidden>'
  34.     cfg.gsub! /^(.*wpa-psk ascii \d) (\S+)/, '\\1 <secret hidden>'
  35.     cfg.gsub! /^(.*key 7) (\d.+)/, '\\1 <secret hidden>'
  36.     cfg.gsub! /^(tacacs-server key \d) (\S+)/, '\\1 <secret hidden>'
  37.     cfg.gsub! /^(crypto isakmp key) (\S+) (.*)/, '\\1 <secret hidden> \\3'
  38.     cfg.gsub! /(ip ospf message-digest-key \d md5) (.*)/, '\\1 <secret hidden>'
  39.     cfg.gsub! /^(ntp authentication-key \d md5) (.*)/, '\\1 <secret hidden>'
  40.     cfg
  41.   end
  42.  
  43.   cmd 'show version' do |cfg|
  44.     out = []
  45.     cfg.each_line do |line|
  46.       next if line.match /^\s+Uptime is/
  47.       out << line
  48.     end
  49.   end
  50.   comment out.join
  51. end
  52.  
  53.  
  54. cmd 'show running-config' do |cfg|
  55.   cfg = cfg.each_line.to_a[3..-1]
  56.   cfg = cfg.reject { |line| line.match /^ntp clock-period / }.join
  57.   cfg.gsub! /^Current configuration : [^\n]*\n/, ''
  58.   cfg.gsub! /^\ tunnel\ mpls\ traffic-eng\ bandwidth[^\n]*\n*(
  59.     (?:\ [^\n]*\n*)*
  60.     tunnel\ mpls\ traffic-eng\ auto-bw)/mx, '\1'
  61.   cfg
  62. end
  63.  
  64. cfg :telnet do
  65.   username /^Username:/i
  66.   password /^Password:/i
  67. end
  68.  
  69. cfg :telnet, :ssh do
  70.     # preferred way to handle additional passwords
  71.     if vars :enable
  72.       post_login do
  73.         send "enable\n"
  74.         cmd vars(:enable)
  75.       end
  76.     end
  77.     post_login 'terminal length 0'
  78.     pre_logout 'exit'
  79.   end
  80. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement