1

ruby net-ssh gemを使用して、JuniperM10iルーターに変更を加えられるようにしたいと思います。ただし、「configure」を送信した後、構成コマンドを送信できません。

たとえば、ssh経由でルーターにログインした後、次の3つのコマンドを発行したいと思います。

configure
show system
exit

net-sshライブラリを使用して、次のことを試しましたが成功しませんでした。

# 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

実行すると、次の出力が得られます。

Channel open.
FAIL: show system
FAIL: exit
Data Entering configuration mode
!!!!!!!!!!
Channel is closing!

では、「configure」の後に「showsystem」コマンドを正しく渡すにはどうすればよいですか?

解決済み:

私は次の投稿に出くわしました:https ://stackoverflow.com/a/6807178/152852

4

2 に答える 2

2

投稿https://stackoverflow.com/a/6807178/152852に基づいて、追加の宝石「net-ssh-telnet」は私が探している正確な動作を提供します。

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'
于 2012-04-26T19:41:02.680 に答える
1

これは非常に古い質問ですが、参考までに、Cisco/Juniperスイッチの自動化専用にtelnet/SSHセッションをラップする2つのrubyライブラリを見つけました。

于 2016-08-11T20:23:56.457 に答える