lftp executa o arquivo jar após o espelho ter alterado os arquivos?

2

Eu quero sincronizar um diretório de ftp com lftp e executar um arquivo jar depois, mas somente se algum arquivo tiver sido alterado.

Para testar, tentei executar outro arquivo bash depois que a sincronização terminou, mas não funciona:

lftp.sh:

lftp -f "
open $HOST
user $USER $PASS
lcd $SOURCEFOLDER
mirror --delete --verbose --on-change=test.sh $SOURCEFOLDER $TARGETFOLDER
bye
"

test.sh:

echo test ok

Resultado:

  

Comando desconhecido 'test.sh'.

Por que e como posso melhorar isso? O caminho absoluto também falha!

Se não for possível, como posso pegar algum tipo de código de status ao sair para determinar se houve uma mudança na sincronização e executar um comando no caso?

Além disso, tudo bem se eu conseguisse transferir o número de arquivos novos .

    
por membersound 22.08.2017 / 09:31

1 resposta

1

Os manuais para o lftp realmente afirmam que :

  

- on-change = CMD executa o comando se alguma coisa foi modificada

Mas a ideia é que o CMD é o comando lftp, não o Bash. Então, para executar o script local 'task.sh' devemos usar a expressão lftp como source task.sh ou ! task.sh .

SCRIPTFOLDER="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
lftp -c " 
open ${HOST}
user ${USER} ${PASS} 
lcd $LOCALTARGETFOLDER
mirror --delete --verbose --on-change='source $SCRIPTFOLDER/test.sh' $REMOTESOURCEFOLDER $LOCALTARGETFOLDER
bye
"
    
por Ova 01.02.2018 / 00:16