Um "if" dentro de um ftp


[Home] [Dissertação] [Biba] [Linux] [Conjugue] [br.ispell] [axw3] [uplink]

>
>Gostaria de fazer um script com um if dentro de um ftp. Me disseram que 
>nao da. Ha um comando substituto?
>Gostaria de testar se existe um diretorio
>
>        test -d /pub/ondas/97072512
>
>Tentei com o if dentro do ftp e nao deu certo. O que voce me recomenda?
>Um abraco,
>

Sim, o ftp nao inclui comandos "if" ou "test". O modo mais
simples de se resolver esse problema provavelmente e' fazendo
duas conexoes ftp, a primeira para listar o conteudo do diretorio
e a segunda para, dependendo do resultado da primeira, tomar a
atitude devida.

Segue um script que realiza isso. Troque o servidor ("hal"), o
usuario ("ueda") e o password ("password") para os valores
reais. Esse script foi testado com bash. Como sempre, sugiro
fazer testes interativos. Rode-o da linha de comandos, observando
a saida. Quando estiver tudo ok, comente os echo's. Abraco,

Ricardo Ueda.

----

#!/bin/sh

#
# data desejada
#
data=97072512
echo data fixada em $data

#
# verifica se existe o diretorio pub/ondas/$data
# no servidor. Em caso afirmativo a variavel result
# contera uma linha como
#
# drwxrwxr-x 2 ueda ueda 1024 Aug 5 13:26 97072512
#
# Em caso negativo, ela ficara vazia
#
echo tentando primeira conexao
result=`ftp -i -v -n hal <<FIM | grep "^d.*$data"
user ueda password
cd pub/ondas
dir $data
quit
FIM`
echo resultado: $result

#
# Testa o conteudo da variavel result e faz nova
# conexao ftp no caso do diretorio existir, trazendo
# todo o conteudo do diretorio remoto para o diretorio
# local homonimo.
#
echo testanto resultado
if [ "$result" != "" ]
then
echo criando diretorio local
rm -rf $data
mkdir $data
cd $data
echo fazendo segunda conexao
ftp -i -v -n hal <<FIM
user ueda password
cd pub/ondas/$data
bin
mget *
quit
FIM
cd ..
echo transferencia completada

#
# Informa inexistencia do diretorio
#
else
echo "nada para a data $data"
fi