Ваш вопрос фактически состоит из трех вопросов:1) Как загрузить файл (с аутентификацией) 2) Как загрузить файл (с аутентификацией) 3) Как запланировать работу CRON
Мой первый вопрос: как вы хотите сохранить id/passwd?
Объявление 1) Вы можете использовать как curl
и wget
зависимости от того, что лучше для вашего варианта использования. Я рекомендую прочитать отличную статью Даниэля Стенберга:curl против Wget, чтобы понять различия (краткий обзор - curl
более удобен для разработчиков и также является библиотекой, а wget
- это команда).
Я рекомендую использовать сертификаты без пользователя /passwd, поскольку они будут видны всем, у кого есть ваш идентификатор или группа.
В моем примере я буду использовать curl
и Certificate:
curl --cert certificate_file.pem https://example.com/example.xml
Объявление 2) Чтобы загрузить файл curl -T example.xml --cert certificate_file.pem ftps://ftp.server.com/remotedir/
объявление 3) Cron формат:
# Minute Hour Day of Month Month Day of Week Command
# (0-59) (0-23) (1-31) (1-12 or Jan-Dec) (0-6 or Sun-Sat)
0 2 12 * * /usr/bin/find
Вы только crontab -e
для редактирования файла crontab. Другие способы могут привести к повреждению файла.
Если вы хотите запускать файл каждый четверг в 8 утра, сделайте это следующим образом:
0 8 1-31 1-12 4 /path/your_script.sh
или вы можете сделать это с помощью *
: 0 8 * * 4 /path/your_script.sh
.
Если вы хотите узнать больше, сделайте это по адресу: использование Cron и Crontab и примеры
Теперь собери это:
#!/bin/bash
# $1 is your command line input (e.g. example.xml)
file_download=$1
file_upload=$2
actual_download="curl --cert certificate_file.pem https://example.com/$file_download"
eval $actual_download
if [ -e "$file_upload" ] then
actual_upload="curl -T $file_upload --cert certificate_file.pem ftps://ftp.server.com/remotedir"
eval $actual_upload
else
echo "The $file_upload does not exist!"
fi
Затем вы должны выполнить файл:your_script.sh /path/example_download.xml /path/example_upload.xml