Spec-Zone.ru › Chef 16

ресурс crontab

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

Используйте ресурс аудита 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

Путь к системному 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' }
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