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