1

この部分に何か問題があると思います。

check = %x( cat '/etc/apache2/ports.conf' )

/etc/apache2/ports.conf からコンテンツを取得し、ポート 8581 が既にリッスンされているかどうかを確認したいのですが、これが私のコードです。デプロイ後のキャップ タスクです。

desc "Ports Updation"
task :portsUpdation do
   # Editing /etc/apache2/ports.conf
    ports_file = "/etc/apache2/ports.conf"
    run "#{try_sudo} chmod -R 0777 #{ports_file}" 

    check = %x( cat '/etc/apache2/ports.conf' )
    puts check

    unless /Listen 8581/.match check
        run "#{try_sudo} sed -i '$ a\Listen 8581\n' #{ports_file}"
    end
    run "#{try_sudo} chmod -R 0644 #{ports_file}"
end

この cap タスクを実行すると、変数「check」は常にローカルにある ports.conf を出力します。私が欲しいのは、サーバーからのコンテンツです。

この cap タスクを実行すると、サーバーのパスワードを尋ねられました。cap deploy も試してみました。同じ結果です。pblm は何でしょう。

4

2 に答える 2

2

コマンドをリモートで実行したい場合runは、他のすべての場所で行ったように呼び出す必要があります!

于 2013-03-08T13:15:12.583 に答える
0
check = capture("cat /etc/apache2/ports.conf")

トリックをしました。このメソッド capture() は、渡された cmd の結果を返します。

于 2013-03-11T09:02:54.273 に答える