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