2013-03-08 49 views
1

我猜這部分有些東西是錯誤的。Cap任務本地獲取內容

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。我想要的是來自服務器的內容。

當我跑這個帽任務時,我被問服務器密碼。我也嘗試帽部署。同樣的結果。什麼可能是pblm。

回答

2

如果您想要遠程執行命令,您需要像在其他所有地方一樣撥打run

+0

其實我需要變量check中的run()的輸出。幸運的是有一個方法capture()滿足了我的確切需求。不管怎麼說,還是要謝謝你。它看起來像一個簡單的問題,但沒有人給出正確的答案..城市 – Linda 2013-03-11 09:00:12

+0

這是因爲你問錯了問題! – phoet 2013-03-11 12:44:12

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

訣竅。這個方法capture()返回傳遞的cmd的結果。