Cap任务在本地获取内容

时间:2013-03-08 08:36:33

标签: ruby linux capistrano

我猜这个部分有些问题。

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

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

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

2 个答案:

答案 0 :(得分:2)

如果您想远程执行命令,则需要像在其他所有地方一样调用run

答案 1 :(得分:0)

check = capture("cat /etc/apache2/ports.conf")

诀窍。此方法capture()返回传递的cmd的结果。