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–59)
- Вторая — час (0–23)
- Третья — день месяца (1–31)
- Четвёртая — месяц (1–12)
- Пятая — день недели (0–7, где 0 и 7 означают воскресенье)
Таким образом, например, строка 0 3 * * *
указывает, что команда будет выполняться ежедневно в 3 часа утра.
См. также
ssh(1), keychain(1); глава 16.