我想提取并列出从每个 cron 作业旁边的服务器打印的 cron 作业



我正在尝试在 chef 中打印受 cron 作业配方影响的所有服务器的列表,我想在特定服务器的每个 cron 作业旁边打印 cron 时间值。

我已经使用了这样的脚本:

for i in $(ls cookbooks/cookbook_name/recipes); 
    do knife search node "recipes:*${i%.*}" -i; 
done

我想从这样的表达式中提取crontab时间:

% frequent zfs snapshot
  cron_d 'zfs-auto-snapshot-frequently' do
  minute '*/15'
  path PATH
  command '/opt/zfs-auto-snapshot.sh frequent 6'
end
% Hourly
cron_d 'zfs-auto-snapshot-hourly' do
  minute '59'
  path PATH
  command '/opt/zfs-auto-snapshot.sh hourly 4'
end
% Daily
cron_d 'zfs-auto-snapshot-daily' do
  minute '59'
  hour '23'
  path PATH
  command '/opt/zfs-auto-snapshot.sh daily 3'
end
% Weekly
cron_d 'zfs-auto-snapshot-weekly' do
  minute '0'
  hour '0'
  weekday '1'
  path PATH
  command '/opt/zfs-auto-snapshot.sh weekly 1'
end
% Monthly
cron_d 'zfs-auto-snapshot-monthly' do
  minute '0'
  hour '0'
  day '1'
  path PATH
  command '/opt/zfs-auto-snapshot.sh monthly 1'
end

我需要这样的列表输出:

admindb.xyz.com ****3*

server.xyz.com ****3*

office.xyz.com *2***

collector01.xyz.com *3*4*

除非对代码做出大量假设并编写一些糟糕的正则表达式,否则这是不可能的。Chef 就是代码,任何代码的静态分析都很难,对于 Ruby 来说,它介于令人愤怒和"lolno"之间。最好的办法是甚至不看Chef,而是通过SSH直接查询每台机器。

最新更新