17.8. Беспарольный вход для заданий cron

Проблема

Требуется запланировать архивацию или пересылку файлов через SSH с использованием cron. Как настроить cron для использования keychain, чтобы обеспечивать аутентификацию на удалённых хостах без необходимости ввода пароля?

Решение

Для автоматизации SSH-аутентификации можно использовать инструмент keychain, позволяющий хранить ключи для SSH-соединений и автоматически подключаться к хостам. Включите в сценарий cron ту же строку, которая использовалась в .bash_profile, чтобы активировать keychain.

Следующий пример сценария выполняет архивацию домашнего каталога пользователя при помощи rsync:

#!/bin/bash
source /home/saz/.keychain/$HOSTNAME-sh
rsync -a -e ssh --delete --force rsync.test.net::home/saz/ /backups/saz

Оформите его как задание cron, и архивация будет выполняться автоматически после каждого запуска cron, вплоть до следующей перезагрузки.

Теперь рассмотрим немного подробнее, как работает cron и почему он удобен для автоматизации задач.

Cron и его возможности

Cron — это системный демон, используемый для выполнения запланированных заданий на Unix-подобных системах. Он позволяет пользователю назначать регулярные задания, которые будут выполняться автоматически в указанный день и время. Например, cron может выполнять скрипты для резервного копирования, очистки системных логов, обновления данных и мониторинга ресурсов. Cron запускает задания, основываясь на конфигурации, указанной в crontab-файлах.

Файл crontab представляет собой текстовый файл, где каждое задание записывается в формате:

* * * * * команда

Звёздочки указывают, как часто запускать задание, например:

Таким образом, например, строка 0 3 * * * указывает, что команда будет выполняться ежедневно в 3 часа утра.

См. также

ssh(1), keychain(1); глава 16.