Я хотел бы извлечь и перечислить задания cron, напечатанные с сервера, рядом с каждым заданием cron - PullRequest
0 голосов
/ 27 декабря 2018

Я пытаюсь напечатать список всех серверов, на которые влияют рецепты заданий cron в chef, и мне хотелось бы, чтобы значение времени 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 *

1 Ответ

0 голосов
/ 27 декабря 2018

На самом деле это невозможно, если не делать массу предположений о вашем коде и писать ужасные регулярные выражения.Chef - это код, статический анализ любого кода - сложный процесс, с Ruby он находится где-то между бешенством и "лольно".Лучше всего было бы даже не смотреть на Chef и напрямую запрашивать каждую машину через SSH.

...