質問

私は、サーバーへのオーバーsshを与えられたコマンドを実行し、それからの出力をフェッチするRubyスクリプトを記述しようとしています。ここでは、主にプログラミングRubyのの本から適応し、私がこれまで持っているものです:

require 'pty'
require 'expect'

$expect_verbose = true
PTY.spawn("ssh root@x.y") do |reader, writer, pid|
  reader.expect(/root@x.y's password:.*/)
  writer.puts("password")
  reader.expect(/.*/)
  writer.puts("ls -l")
  reader.expect(/.*/)
  answer = reader.gets
  puts "Answer = #{answer}"
end

残念ながら、私は戻ってきてる全てはこれです:

Answer = .y's password:

私が間違って何をやったかと、これを軽減するためにどのように任意のアイデア?

役に立ちましたか?

解決

sudo gem install net-sshます。http

このために私はネットのssh宝石を使用することをお勧めします://net-ssh.rubyforge.org/ssh/v2/api/index.htmlする

のコードは少しこのように書きます:

require 'rubygems'
require 'net/ssh'

Net::SSH.start('your-server', 'username', :password => "password") do |ssh|
  puts ssh.exec!("ls -la")
end

他のヒント

をチェックhttp://www.42klines.com/2010/08/14/what-to-expect-from-the-ruby-expect-library.html の - それは、RubyのととせずにPTYを使用してのいくつかの素晴らしい例があります期待しています。

私はよく、私は私の「バッファ」を見て、何が起こっているか出て働くことができるようにのみ、PTYを使用することが簡単に見つけます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top