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

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

Re: [shell-script] Ajuda com Script Shell


From: Cléoson Barreto
Subject: Re: [shell-script] Ajuda com Script Shell
Date: Mon, 16 Jan 2012 14:34:30 -0300

Olá!

     Não entendi porque você está fazendo as atribuições abaixo:

"$1"="$PATHLOCAL"
"$2"="$ARQUIVODEST"
"$3"="$DIRREMOTO"

     Aparentemente, o erro está aí.  Você está substituindo o valor da
variável "$1", que foi recebida na linha de comando, pelo valor de
"$PATHLOCAL".

     Eu substituiria o seguinte:

if [ "$1" = "" -o "$2" = "" -o "$3" = "" ]
then
echo "Envio de arquivos por FTP"
echo "Uso: $0 <pathlocal> <arquivodest> <dirremoto>"
echo
exit 1
fi

     Por:

if [ "$#" -eq "0" ]
then
...
fi

    E também:

TAMANHOLOCAL="`ls -l "$PATHLOCAL"/"$ARQUIVODEST" | awk '{print $5}'`"

     Por:

TAMANHOLOCAL="`cut -f1 < <(du "$PATHLOCAL"/"$ARQUIVODEST")`"


[]'s
Cléoson.

Em 16 de janeiro de 2012 14:04, Ricardo M Martins <address@hidden>escreveu:

> **
>
>
> Amigos,
>
> Estou iniciando no mundo dos scripts shell, e gostaria de uma ajuda. Fiz um
> script para realizar conexão por ftp, que recebe os parâmetros e realiza o
> envio seguindo os dados informados. O script está funcionando, mas ao
> executar estou tendo como saída as seguintes linhas:
>
> $ ./ftp.sh /cygdrive/t Ricardo.exe /var/www
> *./ftp.sh: line 11: /cygdrive/t=/cygdrive/t: No such file or directory
> ./ftp.sh: line 12: Ricardo.exe=Ricardo.exe: command not found
> ./ftp.sh: line 13: /var/www=/var/www: No such file or directory*
> Copiando /cygdrive/t/Ricardo.exe para /cygdrive/t/Ricardo.exe.cache
> Realizando conexao FTP...
> Arquivo transferido com sucesso!
> Verificada a integridade dos arquivos, OK!
> Arquivo de cache apagado
>
> Finalizado!
>
> Pressione ENTER para sair.
>
> As linhas em* negrito* são o meu problema. Eu executo o script da seguinte
> forma ./ftp.sh <pathlocal> <arquivodestino> <diretorioremoto>, no entanto
> está apresentando erro nas linhas onde eu digo que as variáveis iniciais
> ($1, $2 e $3) passarão a ter outro nome. A impressão que dá é que
> interpretando as linhas como comando para executar. O source do script está
> abaixo:
>
> #!/bin/sh
>
> if [ "$1" = "" -o "$2" = "" -o "$3" = "" ]
> then
> echo "Envio de arquivos por FTP"
> echo "Uso: $0 <pathlocal> <arquivodest> <dirremoto>"
> echo
> exit 1
> fi
>
> #Declaracao das variaveis
> CACHEFILE=".cache"
> "$1"="$PATHLOCAL"
> "$2"="$ARQUIVODEST"
> "$3"="$DIRREMOTO"
>
> #Coletando tamanho do arquivo local
> TAMANHOLOCAL="`ls -l "$PATHLOCAL"/"$ARQUIVODEST" | awk '{print $5}'`"
>
> #Copiando o arquivo para um arquivo de cache
> echo "Copiando "$PATHLOCAL"/"$ARQUIVODEST" para
> "$PATHLOCAL"/"$ARQUIVODEST""$CACHEFILE""
> cd "$PATHLOCAL"
> cp "$ARQUIVODEST" "$ARQUIVODEST""$CACHEFILE"
>
> #Iniciando a conexao FTP
> echo "Realizando conexao FTP..."
>
> #Funcao FTP
>
> fn_ftp()
> {
> /usr/bin/lftp -u usuario,senha ipdoservidor <<EOF
> cd "$DIRREMOTO"
> mv "$ARQUIVODEST" "$ARQUIVODEST".old
> lcd "$PATHLOCAL"
> put "$ARQUIVODEST""$CACHEFILE"
> cd "$DIRREMOTO"
> mv "$ARQUIVODEST$CACHEFILE" "$ARQUIVODEST"
> ls "$DIRREMOTO"/"$ARQUIVODEST" > "$PATHLOCAL"/tamanhoremoto.txt
> bye
> EOF
> }
>
> #Executando FTP
> fn_ftp > /dev/null
>
> echo "Arquivo transferido com sucesso!"
>
> #Coletando tamanho do arquivo remoto
> TAMANHOREMOTO="`cat "$PATHLOCAL"/"tamanhoremoto.txt" | awk '{print $5}'`"
>
> #Comparando o arquivo local com o arquivo enviado para o servidor
> if [ "$TAMANHOLOCAL" -eq "$TAMANHOREMOTO" ]; then echo 'Verificada a
> integridade dos arquivos, OK!'; else echo 'Os arquivos foram corrompidos na
> transferencia!'; fi
>
> # Removendo o arquivo cache e o arquivo onde fica armazenada a informacao
> com o tamanho do arquivo remoto
> rm -f "$PATHLOCAL"/"$ARQUIVODEST""$CACHEFILE"
> rm -f "$PATHLOCAL"/tamanhoremoto.txt
> echo "Arquivo de cache apagado"
> printf "\nFinalizado!\n\nPressione ENTER para sair.\n"
> read
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  __._,_.__
>


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



reply via email to

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