我想要实现的是一个capistrano3任务,它在所有服务器上执行日志文件grep - 这将节省大量时间,因为我们有一个很多服务器都是这样做的,所以手动或者甚至是脚本化的,但是会依次耗时。当执行的命令没有返回任何内容时sshkit捕获是否可能不会返回
我有一个粗糙的边缘任务实际上工作,除非其中一个服务器没有返回任何grep。在这种情况下,整个命令都会结束。
因此想知道是否有办法设置capture
接受空回报。
namespace :admin do
task :log_grep, :command, :file do |t,args|
command = args[:command] || 'ask for a command'
file = args[:file] || 'log_grep_results'
outs = {}
on roles(:app), in: :parallel do
outs[host.hostname] = capture(:zgrep, "#{command}")
end
File.open(file, 'w') do |fh|
outs.each do |host,out|
fh.write(out)
end
end
end
end
这救了我的一天。 – sahil 2016-11-23 08:22:33