Vagrant插件:如何捕获machine.action输出

时间:2016-02-10 11:17:27

标签: vagrant vagrant-plugin

我开始为Vagrant编写一个插件,它将添加一个命令。在Command#execute中我需要捕获:ssh_run输出。现在输出直接到标准输出。命令中的小测试片段:

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 个答案:

答案 0 :(得分: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