Twoje pytanie składa się z trzech pytań:
1) Jak pobrać plik (z auth)
2) Jak przesłać plik (z auth)
3) Jak zaplanować pracę CRON
Moje pierwsze pytanie brzmi: jak chcesz przechowywać id / passwd
ad 1) Możesz użyć obu curl
i wget
w zależności od tego, co jest lepsze dla twojego przypadku użycia. Polecam czytanie doskonałego postu Daniela Stenberga curl vs Wget zrozumieć różnice (szybkie podsumowanie - curl
jest bardziej przyjazny dla programistów i jest również biblioteką wget
to polecenie).
Zalecam używanie certyfikatów bez user / passwd, ponieważ byłyby one widoczne dla wszystkich posiadaczy Twojego identyfikatora lub grupy.
W moim przykładzie użyję curl
i certyfikat:
curl --cert certificate_file.pem https://example.com/example.xml
ad 2) Aby przesłać plik curl -T example.xml --cert certificate_file.pem ftps://ftp.server.com/remotedir/
ad 3) Format 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
Tylko ty crontab -e
edytować plik crontab. Inne sposoby mogą prowadzić do uszkodzenia pliku.
Jeśli chcesz uruchamiać swój plik w każdy czwartek o 8 rano, wykonaj następujące czynności:
0 8 1-31 1-12 4 /path/your_script.sh
lub możesz to zrobić *
: 0 8 * * 4 /path/your_script.sh
.
Jeśli chcesz przeczytać więcej, zrób to na: Wykorzystanie i przykłady Cron i Crontab
Teraz połącz to:
#!/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
Następnie wykonasz plik: your_script.sh /path/example_download.xml /path/example_upload.xml