ruby Net::Telnet を使用して Windows 2008 に接続し、いくつかのコマンドを実行しようとしました。しかし、それは失敗しました。
実行する場合
tn = Net::Telnet::new("Host"=>"walnutserver","Port"=>2300,"Prompt"=> /C:.*>/)
tn.login("user","pass")
tn.cmd("dir")
tn.cmd("dir")
1つ目tn.cmd("dir")
は成功ですが、2つ目は例外をスローします。その後、後続のコマンドはすべて失敗しました。実験した結果、どの Windows コマンドでもこれが発生することがわかりました。
例外:
Timeout::Error: timed out while waiting for more data
from c:/troy/data/chef/chef-client11/chef/embedded/lib/ruby/1.9.1/net/telnet.rb:558:in `waitfor'
from c:/troy/data/chef/chef-client11/chef/embedded/lib/ruby/1.9.1/net/telnet.rb:697:in `cmd'
from (irb):20
from c:/troy/data/chef/chef-client11/chef/embedded/bin/irb:12:in `<main>'
sock.sysread() メソッドを使用して応答を読み取ると、端末がブロックされていることがわかり、表示されますdir\r\n0x00More?
buf if execute
tn = Net::Telnet::new("Host"=>"walnutserver","Port"=>2300,"Prompt"=> /C:.*>/)
tn.login("user","pass")
tn.cmd("ls")
tn.cmd("uname")
正常に動作していません。ls
、<code>uname は、ターゲット マシンにインストールされた Chef によってもたらされる Linux コマンドです。
ruby バージョン:ruby 1.9.3p286 (2012-10-12) [i386-mingw32]
Stackoverflow で同じ質問をしている他の人を見つけましたが、解決策がわかりませんでした。http://www.ruby-forum.com/topic/1516840
君の力が必要。