1

RubyコードでSSHを使用してリモートマシンにログインし、SSHで接続したら別のディレクトリにcdしようとしています。これを行うためのRubyコードを次に示します。

require 'net/ssh'
require 'rubygems'
require 'needle'

Net::SSH.start('host', 'shui', :password => "password") do |ssh|
   output = ssh.exec!("hostname")
   shell = ssh.shell.open
   shell.pwd
   shell.cd "/svn"
   puts shell.pwd
end

スクリプトを実行すると、次のエラーが発生します。

testssh.rb:8:in `block in <main>': undefined method `shell' ... (NoMethodError)

これを行うために必要なgemをインストールしたと確信しています。これを修正する方法について何か提案はありますか?ありがとう!

4

2 に答える 2

2

shellにはメソッドがありません。生成さNet:SSH v2れるオブジェクトはNet::SSH::Connection::Sessionです。

このnet-ssh拡張機能は、探している機能を提供します: https://github.com/mitchellh/net-ssh-shell

于 2012-08-13T22:00:10.777 に答える
1

バージョンを確認できますか?

gem list --local | grep ssh

私は2.5.2を持っています

オンラインで複数の参考文献を見つけましたが、次のものを使用する必要があります。

http://net-ssh.rubyforge.org/ssh/v2/api/classes/Net/SSH.html

ここにv1への参照があります

http://net-ssh.github.com/ssh/v1/chapter-5.html

後者は、シェル方式を使用します。しかし、その宝石がインストールされているとは思いません。

それでは、最初のもの(v2)を見てください。それは私にとってはうまくいきます。

于 2012-08-13T22:17:12.227 に答える