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

我运行了这个上限任务,变量“检查”总是打印我本地的 ports.conf。我想要的是来自服务器的内容。

当我运行这个上限任务时,我被问到服务器密码。我也尝试过 cap deploy。结果相同。可能是什么问题。

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 回答