首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ruby gem net-ssh配置Juniper路由器

使用ruby gem net-ssh配置Juniper路由器
EN

Stack Overflow用户
提问于 2012-04-26 04:12:33
回答 2查看 3.2K关注 0票数 1

我希望能够使用对Juniper M10i路由器进行更改。但是,在发送“配置”之后,我无法发送任何配置命令。

例如,在通过ssh登录到路由器之后,我想发出以下三个命令:

代码语言:javascript
复制
configure
show system
exit

使用net库,我尝试了以下操作,但没有成功:

代码语言:javascript
复制
# net-ssh (2.3.0)
require 'net/ssh'

session = Net::SSH.start(host, user, :password => password)
session.exec!('term length 0')
session.exec!('term width 0')

channel = session.open_channel do |ch|
  puts "Channel open."

  ch.on_close do |ch|
    puts "Channel is closing!"
  end

  ch.on_data do |ch, data|
    puts "Data #{data}!!!!!!!!!!"
  end

  ch.exec "configure" do |ch, success|
    puts "FAIL: configure" unless success
  end

  ch.exec "show system" do |ch, success|
    puts "FAIL: show system" unless success
  end

  ch.exec "exit" do |ch, success|
    puts "FAIL: exit" unless success
  end
end
session.loop

执行时,我得到以下输出:

代码语言:javascript
复制
Channel open.
FAIL: show system
FAIL: exit
Data Entering configuration mode
!!!!!!!!!!
Channel is closing!

那么,如何在“配置”之后正确地传递"show system“命令呢?

解决:

我无意中发现了以下帖子:https://stackoverflow.com/a/6807178/152852

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-26 19:41:02

基于post,https://stackoverflow.com/a/6807178/152852,额外的创业板"net-ssh-telnet“提供了我正在寻找的确切行为。

代码语言:javascript
复制
require 'net/ssh'
require 'net/ssh/telnet'

session = Net::SSH.start(host, user, :password => password)
t = Net::SSH::Telnet.new("Session" => session, "Prompt" => prompt)

puts t.cmd 'configure'
puts t.cmd 'show | compare'
puts t.cmd 'exit'
puts t.cmd 'exit'
票数 2
EN

Stack Overflow用户

发布于 2016-08-11 20:23:56

我知道这是一个非常古老的问题,但作为参考,我发现了两个ruby库,它们专门包装telnet/ SSH会话,专门用于Cisco/ Juniper交换机自动化:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10327141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档