私はRubyのptyを試すために少しテストをしていましたが、正しく理解できません。主な問題は、正規表現が欲張りでないことだと思います。
これは呼ばれるプログラムinputs.rb
です:
puts "Give me root@server password:"
password = gets.chomp()
puts "Thank you! Your password is: #{password}"
そしてこれは呼ばれるプログラムtest.rb
です:
require 'pty'
require 'expect'
#$expect_verbose = true
#answer = %r/Thank you! Your password is: \w+/
PTY.spawn("ruby ./inputs.rb") do |reader, writer, pid|
writer.sync = true
reader.expect(/root@server password:/) do |output|
writer.puts("password1234")
end
#reader.expect(answer) do |output|
#reader.expect(/Thank you! Your password is: \w{6,}/) do |output|
#reader.expect(/Thank you! Your password is: (\w+)/) do |output|
reader.expect(/Thank you! Your password is: \w+/) do |output|
puts "The whole output is ||||#{output}||||\n"
output.first.each do |line|
puts "output1 = |#{line}|\n"
end
end
end
残念ながら、出力を印刷すると、次のようになります。
The whole output is ||||
password1234
Thank you! Your password is: p||||
output1 = |
|
output1 = |password1234
|
output1 = |Thank you! Your password is: p|
なぜではない
Thank you! Your password is: p||||
の
Thank you! Your password is: password1234||||
ですか?
これは正常ですか?その場合:この動作を変更する方法はありますか?
私が試したこと:
- rubularの正規表現:動作します。
- コメントされたすべての選択肢:どれも機能しません(完全なパスワードを取得してください)。
- http://www.42klines.com/2010/08/14/what-to-expect-from-the-ruby-expect-library.html
Rubyバージョン:1.8.7
Ubuntu:10.04(Lucid Lynx)
私はあなたが持っているかもしれないどんな考えにも感謝します。どうもありがとうございます。