Есть система по централизованному сбору конфигов сетевого оборудования - oxidized. В общем и целом работает, за исключением одного нюанса - свитчи D-Link, на которых настроена аутентификация по RADIUS, для доступа к show config, который требуется oxidized для получения конфига, нужен ввод команды enable и последующего ввода пароля для повышения привилегий. Для каждого вендора существует файл настроек, для D-Link он такой:
class Dlink < Oxidized::Model
# D-LINK Switches
prompt /^(\r*[\w.@()\/:-]+[#>]\s?)$/
comment '# '
cmd :secret do |cfg|
cfg.gsub! /^(create snmp community) \S+/, '\\1 <removed>'
cfg.gsub! /^(create snmp group) \S+/, '\\1 <removed>'
cfg
end
cmd :all do |cfg|
cfg.each_line.to_a[2..-2].map { |line| line.delete("\r").rstrip }.join("\n") + "\n"
end
cmd 'show switch' do |cfg|
cfg.gsub! /^System Uptime\s.+/, '' # Omit constantly changing uptime info
comment cfg
end
cmd 'show vlan' do |cfg|
comment cfg
end
cmd 'show config current'
cfg :telnet do
username /\r*[Uu]ser[Nn]ame:/
password /\r*[Pp]ass[Ww]ord:/
end
cfg :telnet, :ssh do
post_login 'disable clipaging'
pre_logout 'logout'
end
end
Где-то между show vlan и show config current требуется сэмулировать такую последовательность, которую oxidized отправит на свитч:
enable admin #повышаем привилегии, затем Enter
#здесь вводится пароль, который не отображается, можно просто захардкодить в этом файле, затем Enter
В программировании я ноль, пытался сделать по аналогии, но не получается, что-то упускаю.