FTP do script bash em execução no cron não funciona

0

Eu tenho um script que é executado por cron para criar backup de um banco de dados MySQL e alguns arquivos. Depois de criar uma tarball e criptografá-la com openSSH , tenho que colocá-la em um servidor ftp remoto. A seguir está o código para a parte ftp:

    HOST='abcd.dyndns.biz'
    USER='username'
    PASSWD='password'
    FILE='myBack-'${LOCAL_HOST}'-'${DATENAME}'.enc.tar.gz'
    DIRNAME='/usr/local/backups/'

    cd ${DIRNAME}

    ftp -n ${HOST} <<END_SCRIPT
    quote USER ${USER}
    quote PASS ${PASSWD}
    cd backup
    lcd ${DIRNAME}
    put ${FILE}
    quit

END_SCRIPT

Se eu executar diretamente o script a partir da linha de comando > sudo ./mybackup.sh , ele rodará sem problemas e colocará o arquivo de backup no ftp, mas quando estiver rodando a partir de cron ele nunca colocou o arquivo no ftp -ftp (como consolidação de arquivo de log e resultado de e-mail) as etapas funcionam bem. Eu não consigo obter nada de nenhum arquivo de log ou identificar a causa.

NOTA: - O nosso dyndns.biz ip não muda como nós pagamos o plano.

    
por TheVillageIdiot 16.06.2011 / 09:49

3 respostas

3

Use a Curl na funcionalidade de upload:

curl --upload-file "$FILE" --user "$USER:$PASSWD" "ftp://$HOST/backup/"
    
por 16.06.2011 / 10:52
0

Umm .. Eu vejo vários pontos porque poderia falhar.

  1. você não sabe que o ftp abriu uma conexão quando você está enviando entrada, mas talvez cuide disso para você (eu não estou familiarizado com o seu prog de ftp .. poderia ser qualquer coisa afaik).
  2. você não está separando seus comandos ftp: // com ponto - e - vírgulas ou novas linhas - tente adicionar \ n ou; mais uma vez idk o que ur app quer

    • Se o seu aplicativo não conseguir receber informações do sdtin em lote, espere (ferramenta para automatizar aplicativos interativos) . Há chances de que haja um binário para isso no seu gerenciador de pacotes.
  3. você não está verificando se o arquivo realmente existe antes de tentar colocá-lo.

por 16.06.2011 / 15:20
0

Eu tive um problema parecido. A solução para mim: referir-se diretamente aos diretórios sem variáveis como esta:

lcd /mpla/mpla2/dir1
cd  /mpla3/mpla4/dir2

e funcionou. Apenas esta mudança. O quote USER $username e quote PASSWD $password foram deixados como estão, mas sem as chaves.

    
por 20.01.2015 / 13:51