2016-02-10 64 views
0

我開始爲Vagrant編寫一個插件,它將添加一條命令。在命令#執行中,我需要捕獲:ssh_run輸出。現在輸出直接輸出到stdout。從命令中的小測試片段:Vagrant插件:如何捕獲machine.action輸出

with_target_vms(@argv, single_target: true) do |vm| 
    vm.action(:ssh_run, ssh_run_command: 'tail -50 /var/log/boot.log') 
end 

有沒有人知道如何做到這一點?也許vm.action本身不是正確的方法?

感謝很多提前

塞巴斯蒂安

回答

1

那是快。 @effhaa在另一個頻道告訴了我。

with_target_vms(@argv, single_target: true) do |vm| 
    result = [] 
    vm.communicate.sudo('tail -50 /var/log/boot.log') do |type, data| 
    if type == :stdout 
     result = data.split(/[\r\n]+/) 
    end 
    end 
end