shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: RES: [shell-script] FTP retorno


From: Julio C. Neves
Subject: Re: RES: [shell-script] FTP retorno
Date: Fri, 22 Dec 2006 23:21:09 -0200

Jackson,
não me aprofundei muito na lógica, mas achei uns furinhos por ai

Vc fez:

#-- Verifica se o arquivo esta vazio
if [ ! -z $1 ] ; then
echo "***** E-PCAPROM-112" "Arquivo vazio.."
exit 1
fi

A opção -z testa se uma variável está vazia e não o arquivo. O certo seria
-s $1 pq a opção -s é verdadeira se o arquivo existir e tiver tamanho
diferente de zero.

Na função vc fez:

# Inicializa variaveis
>$1
>$2
wl_result_log=${LOG_FIL}
if [ -z $2 ]; then
echo "****** Arquivo $2, vazio *****"
exit 1
fi

Vc escreveu inicializa variáveis, mas no duro, vc criou (ou esvaziou) 2 arqs
com os nomes definidos por $1 e $2

Em seguida acho que vc queria fazer :

if [ -s $2 ]; then
echo "****** Arquivo $2, vazio *****"
exit 1
fi

Novamente troquei a opção, mas neste caso, este test será sempre verdadeiro,
já que vc acabou de criar o arq $2 vazio.

Ainda dentro da função vc fez:

rc=4
# if grep -E "bytes sent in" $wl_result_log; then
if grep -E "Transfer complete" $wl_result_log; then
rc=0
fi

# Fim do script

exit ${rc}

Ai tem algumas coisas que eu trocaria.:
1 - tiraria todas as linhas com rc
2 - o exit $rc fará com que seu programa sempre aborte na saida da função,
então nenhuma das linhas após a chamada da função ( ftpPP "10.0.0.1"
"arquivo" ), será executada. O certo é sair de uma função com return.
3 - Como eu te disse em e-mail anterior o ftp tem códigos padrão no log. Se
não me engano, o de Transfer complete é 226. Não gosto de testar a cadeia,
pq alguns sabores te devolvem "Transfer Sucefull" e aí vc se dá mal.

Eu trocaria essas linhas todas pelo seguinte (supondo que o código é
realmente 226):

grep -Eq ^226 $wl_result_log && return 0
return 1

E chamaria a função da seguinte maneita:

if  ftpPP "10.0.0.1" "arquivo"; then
    echo "***** Erro ao Transferir o arquivo, ${2}"
    exit 1
else
    echo "**** Transferido com sucesso! ${2}***"
    exit 0
fi

99% das vezes que vi um test em cima de um $?, a construção estava errada.
Lembre-se que o if foi feito para testar instrução. Então teste a instrução
e não o $? criado por ela.

Abraços,
Julio
:wq


2006/12/22, Jackson William do Nascimento da Silva <address@hidden
>:
>
>   Boa tarde a todos,
>
> Obrigado a todos que me ajudaram nesta questão do retorno do FTP deu tudo
> certo, só que estou enfrentando um outro problema, no meu script (segue
> abaixo), eu não estou conseguindo transferir o arquivo com o conteúdo, não
> sei o que pode ser, já procurei em algumas tutoriais e nada, podem me dar um
> luz.
>
> Obrigado
>
> { SCRIPT }
>
> #!/bin/ksh
>
> #-- Carrega as Variaveis de Ambiente SYBASE
>
> #./amb/operador/bin/syb_environment
> #[ $? != 0 ] && exit 1
>
> # Definicao de variaveis
> WRK_DIR=/root/script/pcaprom
> TMP_DIR=${WRK_DIR}/tmp
> TMP_FIL=${TMP_DIR}/pcprom_tmp_$$
> LOG_FIL=${TMP_DIR}/pcprom_log_$$
> TMP_TMP=${TMP_DIR}/pcprom_$$.tmp
> TMP_ERR=${TMP_DIR}/pcprom_$$.err
> TMP_TXT=${TMP_DIR}/pcprom_$$.txt
>
> #-- Verificacao de Infra Estrutura
> if [ ! -d ${WRK_DIR} ] ; then
> echo "****** E-PCAPROM-111" "Nao encontrado o diretorio ${WRK_DIR}"
> exit 1
> fi
>
> #-- Verifica se o arquivo esta vazio
> if [ ! -z $1 ] ; then
> echo "***** E-PCAPROM-112" "Arquivo vazio.."
> exit 1
> fi
>
> [ ! -d ${TMP_DIR} ] && mkdir ${TMP_DIR}
>
> #-- Mudando p/ o diretorio de trabalho
> cd $WRK_DIR
>
> function exec_log {
> echo "- $1 finalizada -" >> ${TMP_TMP} | cat ${TMP_TMP} >> ${LOG_FIL}
> echo " " >> ${LOG_FIL}
> }
>
> function ftpPP {
>
> # Inicializa variaveis
> >$1
> >$2
> wl_result_log=${LOG_FIL}
> if [ -z $2 ]; then
> echo "****** Arquivo $2, vazio *****"
> exit 1
> fi
> ftp -vn <<FTP_EOF | tee ${wl_result_log}
> open $1
> user cpm cpm
> cd ~cpm/teste
> binary
> put $2
> quit
> FTP_EOF
>
> rc=4
> # if grep -E "bytes sent in" $wl_result_log; then
> if grep -E "Transfer complete" $wl_result_log; then
> rc=0
> fi
>
> # Fim do script
>
> exit ${rc}
>
> }
>
>
> ftpPP "10.0.0.1" "arquivo"
>
> if [ $? != 0 ]; then
> echo "***** Erro ao Transferir o arquivo, ${2}"
> exit 1
> else
> echo "**** Transferido com sucesso! ${2}***"
> exit 0
> fi
>
> #echo "****** I-3M3M-110" "Sucesso execucao carga gerencial do MES"
> #cat ${LOG_FIL}
>
> #rm -f ${TMP_TMP} ${TMP_ERR} ${TMP_TXT} ${TMP_FIL} ${LOG_FIL}
>
> exit 0
>
>  
>



-- 
Goles e abraços,
====Red====


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]