4

私はRubyにかなり慣れていないので、明らかな何かが欠けている場合はご容赦ください。

問題は、Ruby が Net::SSH.exec で変数補間を行っていないように見えることです! 方法。

VCL_DIR = "/usr/local/etc/varnish/"
host = '0.0.0.0'
Net::SSH.start(host, 'root') do |ssh|
  puts "Changing directories to #{VCL_DIR}"
  ssh.exec!("cd #{VCL_DIR}")
  res = ssh.exec!("pwd")
  puts "Server reports current directory as #{res}"
end

出力:

Changing directories to /usr/local/etc/varnish/
Server reports current directory as /root

どんな助けでも大歓迎です。Ruby 1.9.3p194 の使用

4

2 に答える 2

5

問題は、Net::SSH が実行呼び出しごとに異なるシェルを使用することです。解決策は、ステートフル シェルを使用することです。これを行う宝石がありますが、時代遅れです。Net::SSH::Shell 経由https://github.com/mitchellh/net-ssh-shell

私は Rye を使用してこのタスクを処理することにしました。http://code.google.com/p/rye/

于 2012-05-16T19:01:41.337 に答える