Executar rotina de FTP dentro de laço de repetição [RESOLVIDO]

1. Executar rotina de FTP dentro de laço de repetição [RESOLVIDO]

Walker Luiz de Freitas
WalkerPR

(usa Deepin)

Enviado em 04/02/2015 - 14:22h

Olá a todos!

Estou com dificuldade de utilizar comandos de FTP dentro de um laço de repetição. Parece que há um conflito entre o delimitador final do FTP com o delimitador do laço (comando "for").

O erro que retorna descrevo abaixo:
./teste.sh: line 46: warning: here-document at line 23 delimited by end-of-file (wanted `FTP')
./teste.sh: line 47: erro de sintaxe: fim prematuro do arquivo


Também segue o código do script, os usuários e senhas do FTP são fictícios.

# Clientes cadastrados a buscar informacoes.
cliente=("CACHACA" "BEBIDA" "GELADA")
usuario=("1001" "2002" "3003")
senha=("abc123" "def456" "ghi789")
indice=("36" "68" "36") # sub-pastas, diretorio

# Verificando o total de clientes.
chaves=("${!cliente[@]}")
QTDCLI=${#chaves[@]}

# Indo ate a pasta a receber os dados.
cd /var/www/planetpress/sistema/rejeitos/processar

# Capturando a data do dia para a busca.
pastadia=`date +%d-%m-%Y`
TOTAL=0
PARCIAL=0

# Passando por todos os clientes do ARRAY
for ((i=0; i<=$QTDCLI; i++))
do

ftp -ivn transfer.correios.com.br << FTP
user ${usuario[$i]} ${senha[$i]}
cd "DIRETO/${indice[$i]}/${usuario[$i]}/POE/$pastadia"
pwd
mget POE*.DIR
bye
EOF
FTP

EXITSTATUS=$?
if [ $EXITSTATUS != 0 ];
then
echo "$(date). . .ERRO na transmissao. . .arquivos do cliente ${cliente[$i]} nao recebidos." >> /var/log/processos/CorreiosBuscaRejeitos.log
else
TOTAL=`ls *.DIR | wc -l`
PARCIAL=$(($TOTAL))
echo "$(date). . .processo executado. . .$PARCIAL arquivos capturados do cliente ${cliente[$i]}" >> /var/log/processos/CorreiosBuscaRejeitos.log
fi
unset EXITSTATUS
TOTAL=0

done


Pretendo utilizar esta estrutua para não ter que repetir o código a todo instante quando for cadastrar novos acessos (usuários e senhas) para logar. Por isso utilizo o array no início.

Qualquer sugestão é bem vinda.

Obrigado,



  


2. Re: Executar rotina de FTP dentro de laço de repetição [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 04/02/2015 - 15:23h

WalkerPR escreveu:

Olá a todos!

Estou com dificuldade de utilizar comandos de FTP dentro de um laço de repetição. Parece que há um conflito entre o delimitador final do FTP com o delimitador do laço (comando "for").

O erro que retorna descrevo abaixo:
./teste.sh: line 46: warning: here-document at line 23 delimited by end-of-file (wanted `FTP')
./teste.sh: line 47: erro de sintaxe: fim prematuro do arquivo


Também segue o código do script, os usuários e senhas do FTP são fictícios.

[...]

Pretendo utilizar esta estrutua para não ter que repetir o código a todo instante quando for cadastrar novos acessos (usuários e senhas) para logar. Por isso utilizo o array no início.

Qualquer sugestão é bem vinda.

Obrigado,


O erro aí foi de semântico, você indentou o delimitador 'FTP' e o here-document acabou não encontrando ele. Simplificando o problema teríamos:


$ cat script.sh
#!/bin/bash

cat << FTP
abc
def
EOF
FTP
$ ./script.sh: line 7: warning: here-document at line 3 delimited by end-of-file (wanted `FTP')
abc
def
EOF
FTP


Para corrigir, precisa remover a indentação do delimitador:


$ cat script.sh;
#!/bin/bash

cat << FTP
abc
def
EOF
FTP
$ ./script.sh
abc
def
EOF




3. Re: Executar rotina de FTP dentro de laço de repetição

Sandro Marcell
smarcell

(usa Slackware)

Enviado em 04/02/2015 - 15:35h

Ou simplesmente fazer assim adicionando um '-' e mantendo a indentação:


ftp ... <<- FTP
...
...
FTP



4. Re: Executar rotina de FTP dentro de laço de repetição [RESOLVIDO]

Walker Luiz de Freitas
WalkerPR

(usa Deepin)

Enviado em 04/02/2015 - 15:44h

textmode escreveu:

O erro aí foi de semântico, você indentou o delimitador 'FTP' e o here-document acabou não encontrando ele. Simplificando o problema teríamos: . . .

Para corrigir, precisa remover a indentação do delimitador: . . .

[/code]


Realmente era esta a questão, digo, meu erro.
Ao realizar a correção, a rotina funcionou perfeitamente, abaixo o resultado do LOG do script


Qua Fev 4 15:38:15 BRST 2015. . .processo executado. . .35 arquivos capturados do cliente AEP
Qua Fev 4 15:38:37 BRST 2015. . .processo executado. . .84 arquivos capturados do cliente Salfer
Qua Fev 4 15:38:37 BRST 2015. . .processo executado. . .84 arquivos capturados do cliente Gazin


Obrigado por me ajudar a corrigir este problema.
Antes, tínhamos facilmente um link para indicar como "melhor resposta". Ainda dispomos deste recurso no site ?!







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts