0

Rubyスクリプトにサーバーにsftpしていくつかのコマンドを実行する方法はありますか?

これが私のスクリプトです

Net::SFTP.start(IP_ADDRESS, 'root', :keys => ["/Users/user/.ssh/id_rsa"]) do |sftp|
    sftp.mkdir! "/srv/new_dir"
    sftp.dir.foreach("/srv/crm/current") do |entry|
      puts entry.longname
      sftp.file.open("/srv/new_dir", "w") do |f|
        f.puts entry
      end
    end
end

基本的に、サーバーにsftpして、フォルダーを新しいフォルダーにコピーしようとしています。apacheを再起動したいと思います。私はこれを試しました:

FileUtils::sudo "/etc/init.d/apache2 reload"

しかし、それは機能しません。私が間違っていること、またはこれが可能かどうかについてのアイデアはありますか?

4

2 に答える 2

1

実際にはファイル転送を行っていないため、SFTP を使用する必要はないと思います。を使用して、このスクリプトを簡単に書き換えることができますNet::SSH。その後、シェルへの通常のアクセスが可能になり、Apache コマンドはこのプロセスのもう 1 つのステップにすぎません。

于 2012-04-04T14:07:17.240 に答える
0

私はCapistranoでそれをします。

アップデート:

Capistranoは、Railsアプリケーションをデプロイするために設計されていますが、リモートマシンを管理するためのツールとして使用できます。簡単なレシピで、あなたはあなたの仕事を成し遂げることができます。

次のようなCapfileがあるとします。

desc "sample recipe"
task :sample do
    Dir.glob('**/*') do |f|
        upload f, "tmp/#{f}" 
    end
    run 'ls -lr'
end

role :app, "host name or ip"
set :user, "user_name"

次に、実行cap sampleしてファイルをアップロードし、任意のコマンドを実行できます。

やり過ぎかもしれませんが、NetAPIを使用するよりもはるかに簡単です。

于 2012-04-04T13:37:14.503 に答える