Spec-Zone.ru › Chef 17

ресурс crontab

[править на GitHub]

Используйте crontab ресурс аудита Chef InSpec для проверки записей crontab для конкретного пользователя в системе. Он распознаёт специальные временные строки (@yearly, @weekly и т.д.).

Доступность

Установка

Этот ресурс распространяется вместе с самим Chef InSpec. Вы можете использовать его автоматически.

Версия

Этот ресурс стал доступен в версии v1.15.0 InSpec.

Синтаксис

Блок ресурса crontab объявляет пользователя (по умолчанию текущий пользователь) и детали для проверки, такие как элементы расписания для каждой записи crontab или сами команды:

describe crontab do
  its('commands') { should include '/some/scheduled/task.sh' }
end

Примечание

Матчер include в этом контексте указывает весь список команд, которые должна включать запись crontab, а не конкретную подстроку, которая должна быть включена командой. Матчер include всегда сопоставляет полное вызов команды, включая параметры и аргументы.

Путь к системному crontab также может быть задан через:

describe crontab(path: '/etc/cron.d/some_crontab') do
  its('commands') { should include '/path/to/some/script' }
end

Обратите внимание, что в качестве аргументов ресурса следует указывать только путь или пользователя (а не оба).

Примеры

В следующих примерах показано, как использовать этот ресурс аудита Chef InSpec.

Проверка наличия определённой команды в crontab пользователя root

describe crontab('root') do
  its('commands') { should include '/path/to/some/script -option arg' }
end

Проверка, что запись crontab пользователя myuser для команды ‘/home/myuser/build.sh’ выполняется каждую минуту

describe crontab('myuser').commands('/home/myuser/build.sh') do
  its('hours') { should cmp '*' }
  its('minutes') { should cmp '*' }
end

Проверка, что crontab текущего пользователя не содержит задач, запланированных на выполнение каждый час и каждую минуту

describe crontab.where({'hour' => '*', 'minute' => '*'}) do
  its('entries.length') { should cmp '0' }
end

Проверка, что crontab текущего пользователя содержит одну команду, соответствующую шаблону

describe crontab.where { command =~ /a partial command string/ } do
  its('entries.length') { should cmp 1 }
end

Проверка специальной временной строки (например, @yearly /root/annual_report.sh)

describe crontab.commands('/root/annual_report.sh') do
  its('hours') { should cmp '0' }
  its('minutes') { should cmp '0' }
  its('days') { should cmp '1' }
  its('months') { should cmp '1' }
end

Проверка случая @reboot

describe crontab.commands('/root/reboot.sh') do
  its('hours') { should cmp '-1' }
  its('minutes') { should cmp '-1' }
end

Примеры свойств

Проверка специальной временной строки

describe crontab do
  its('minutes') { should cmp '0' }
  its('hours') { should cmp '0' }
  its('days') { should cmp '1' }
  its('weekdays') { should cmp '1' }
  its('user') { should include 'username'}
  its('commands') { should include '/some/scheduled/task.sh' }
end

Chef InSpec автоматически интерпретирует поддерживаемые crontab специальные временные строки. Например, запись crontab, настроенная на выполнение @yearly может быть проверена так, как если бы запись была вручную настроена на выполнение 1 января в 00:00.

Матчеры

Полный список доступных матчеров можно найти на нашей странице матчеров.

© Chef Software, Inc.
Licensed under the Creative Commons Attribution 3.0 Unported License.
The Chef™ Mark and Chef Logo are either registered trademarks/service marks or trademarks/servicemarks of Chef, in the United States and other countries and are used with Chef Inc's permission.
We are not affiliated with, endorsed or sponsored by Chef Inc.
https://docs.chef.io/inspec/resources/crontab/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API