class Rtprov::CLI
Public Instance Methods
edit(router_name)
click to toggle source
# File lib/rtprov/cli.rb, line 12 def edit(router_name) Router.edit(router_name) end
get(router_name)
click to toggle source
# File lib/rtprov/cli.rb, line 23 def get(router_name) router = Router.load(router_name) sftp = Sftp.new(router.host, router.user, router.administrator_password) puts sftp.get("/system/config#{options[:number]}") end
ls()
click to toggle source
# File lib/rtprov/cli.rb, line 70 def ls Router.names.each do |name| puts name end end
new(name)
click to toggle source
# File lib/rtprov/cli.rb, line 7 def new(name) Initializer.run(name) end
put(router_name, template_name)
click to toggle source
# File lib/rtprov/cli.rb, line 32 def put(router_name, template_name) current_file = "/system/config#{options[:number]}" router = Router.load(router_name) template = Template.find(router_name, template_name) new_config = template.render(router.variables) sftp = Sftp.new(router.host, router.user, router.administrator_password) current_config = sftp.get(current_file) diff = ENV["RTPROV_DIFF"] || %w(colordiff diff).find {|cmd| system("which", cmd, out: "/dev/null", err: "/dev/null") } Dir.mktmpdir do |dir| Dir.chdir(dir) do File.write("new.conf", new_config.gsub(/^#.*$/, "").gsub(/(\r\n|\r|\n)+/, "\r\n")) File.write("current.conf", current_config.gsub(/^#.*$/, "").gsub(/(\r\n|\r|\n)+/, "\r\n")) system("#{diff} -u current.conf new.conf", out: $stdout, err: $stderr) unless options[:force] loop do print "apply? (y/n): " case $stdin.gets.strip when "y" break when "n" return nil end end end sftp.put("new.conf", current_file) Session.start(router) do |s| s.exec_with_passwords "load config #{options[:number]} silent no-key-generate" end end end end
show(router_name)
click to toggle source
# File lib/rtprov/cli.rb, line 17 def show(router_name) puts Router.decrypt(router_name) end
ssh(router_name)
click to toggle source
# File lib/rtprov/cli.rb, line 77 def ssh(router_name) router = Router.load(router_name) warn "Password: #{router.password}" exec "ssh", "#{router.user}@#{router.host}" end