0

私はRubyを使用しており、ルーターにsshして、arraryに保存されている一連のコマンドを実行するための次のコードがあります。

result = PTY.open do |masterIO, slaveFile|
    r, w = IO.pipe

    slaveFile.raw!    
    pid = spawn(sshCommand, :in=>r, :out=>slaveFile)
    r.close; slaveFile.close;

    output = ""
    @commands.each do |subCommand|
        w.puts subCommand
        masterIO.each_line { |line| output += line }
    end
    next ouput
end

私の問題は、それmasterIO.each_line { ... }が永遠にハングすることです。上記のコードでは、閉じる必要があると思いますが、wこれを記述して希望どおりに動作させる方法がまだわかりません。

注:サブコマンドは即時ではないことに注意する必要があるため、最初のコマンドの実行が完了するまで待機してから 2 番目のコマンドを記述する必要があります。

編集 :

すべてのコマンドを「&&」で連結するだけでよいと思います。これにより、それらを順番に実行できますが、これらのコマンドの出力を正常に読み取る方法はまだわかりません

4

1 に答える 1

0

net/ssh lib を使用できないのはなぜですか?

require 'net/ssh'

Net::SSH.start('ip', 'user', password: 'your_password') do |ssh|
  @commands.each {|command| ssh.exec(command)}
end
于 2013-10-30T13:09:15.947 に答える