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

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

Ajuda com Script Shell


From: Ricardo M Martins
Subject: Ajuda com Script Shell
Date: Mon, 16 Jan 2012 15:04:53 -0200

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]



reply via email to

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