Existem pelo menos 2 maneiras possíveis de fazer isso:
Way 1 - Use o curl em um cron job:
Use curl
(instale-o se ainda não estiver instalado). curl
baixa arquivos usando qualquer um dos protocolos usuais - HTTP, HTTPS, FTP. Você poderia usar curl
em uma tarefa cron para fazer o download de uma nova cópia do script periodicamente. Use man curl
para detalhes de invocação.
curl -o /path/to/script http://www.example.com/script
Você pode querer baixar o script com um nome diferente do script que é executado na produção e quando o download obtiver mv
sobre o script de produção; isso é para evitar qualquer problema, caso o script seja chamado no meio do download.
Way 2 - Use um script Wrapper:
Grave um wrapper que baixe o script, se necessário, e, em seguida, exec
s ou o chame (dependendo da linguagem de script). O exemplo é escrito em Bash para que a lógica seja facilmente compreensível; para outras linguagens de script, você terá que se adaptar. Por exemplo, suponha que o script local seja denominado real-script
e o URL seja http://www.example.com/real-script
. O wrapper pode ser wrapper-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 "$@"
Chame esse script de wrapper como se fosse o script real; o wrapper baixará o script real se não houver cópia local ou se a cópia local for mais antiga que o arquivo remoto; então executará a cópia atualizada garantida passando quaisquer argumentos.
Você também pode querer evitar procurar por uma versão mais recente se a cópia local existente não tiver mais de cinco minutos, ou qualquer intervalo de tempo que você permitir.
Observe que, ao usar esse método na produção, provavelmente será necessária alguma verificação de erros.