Есть как минимум 2 возможных способа сделать это:
Используйте curl
(установите его, если он еще не установлен). curl
скачивает файлы по любому из обычных протоколов - HTTP, HTTPS, FTP. Вы можете использовать curl
в задании cron, чтобы периодически загружать новую копию скрипта. Для подробностей вызова используйте man curl
.
curl -o /path/to/script http://www.example.com/script
Вы можете захотеть загрузить сценарий под именем, отличным от имени сценария, который выполняется в производственной среде, а при успешной загрузке mv
она выполняется поверх рабочего сценария; это сделано для того, чтобы избежать каких-либо проблем в случае вызова скрипта во время загрузки.
Напишите оболочку, которая загружает сценарий, если необходимо, а затем exec
s или вызывает его (в зависимости от языка сценария). Пример написан на Bash, поэтому логика легко понять; для других языков сценариев вам придется адаптироваться. Например, предположим, что локальный сценарий называется real-script
, а его URL-адрес - http://www.example.com/real-script
. Оболочка может быть сценарием-оболочкой
:
#! /bin/bash
if [ -f /path/to/real-script ] ; then
# Local copy exists, download only if remote file is newer
curl -z /path/to/real-script -o /path/to/real-script http://www.example.com/real-script
else
# Local copy does not exist, always download
curl -o /path/to/real-script http://www.example.com/real-script
fi
chmod 755 /path/to/real-script
exec /path/to/real-script "$@"
Вызовите этот сценарий оболочки, как если бы это был настоящий сценарий; оболочка загрузит реальный сценарий, если нет локальной копии или если локальная копия старше удаленного файла; затем он выполнит гарантированную новую копию, передав любые аргументы.
Вы также можете не искать более новую версию, если существующая локальная копия не старше 5 минут или любого другого временного интервала, который вы позволяете.
Обратите внимание, что при использовании этого метода в производстве, вероятно, потребуется некоторая проверка ошибок.