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

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

Re: [shell-script] Script de ftp


From: Roberto Warstat
Subject: Re: [shell-script] Script de ftp
Date: Mon, 02 Jun 2014 22:49:07 -0300
User-agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Thunderbird/24.5.0

Muito legal isso.
Conheço muito pouco de shell, ainda mais que sou desenvolvedor PL/SQL, VB e Java.

Estou usando o ncftp pois quando precisei montar esse servidor, pesquisei por clientes de ftp para usar uma porta diferente e achei que ele seria o melhor.
E realmente, faz tempo que esse ftp não tem atualização, mas como está atendendo, fui deixando ele.

Abraço e muito obrigado a todos que me ajudaram.
Roberto

Em 02/06/2014 22:33, 'Julio C. Neves' address@hidden [shell-script] escreveu:
 
Vc fazendo o seguinte:

   ncftpput resto_do_comando > /tmp/erro_word.lst

O que vc estava fazendo e á mesma coisa que isso:

   ncftpput resto_do_comando 1> /tmp/erro_word.lst

Ambas as formas deviam a saída primária (a boa) para o arquivo /tmp/erro_word.ls e a saída de erro (2>) não estava sendo redirecionada.

Então eu pensei: qdo o script dá erro, provavelmente este ftp (que nunca ouvi falar. Sempre preferi o ftp original a todos os outros, pois está muito mais depurado) não manda nada para a saída primária e é por isso que ele está ganhando um arquivo vazio na saída.

Se vc fizer:

   ncftpput resto_do_comando 2> /tmp/erro_word.lst

aí vc estará redirecionando a saída de erro. Para redirecionar ambas, faça:

   ncftpput resto_do_comando 1> /tmp/erro_word.lst 2> /tmp/erro_word.lst

onde esse 1 é opcional, ou faça:

   ncftpput resto_do_comando 1> /tmp/erro_word.lst 2>&1

Isso se lê: mande a saída primária (> ou 1>) para o arquivo tal e a saída de erros (2>) para o mesmo lugar da primária (1>).

E não precisa ser 1 ou 2. Faça p. ex.
$ ls >$ Arq
$ cat Arq.

Viu que legal? Shell é bom demais e a maior parte das pessoas não tenta aprender usá-lo. é uma pena.




Abcs,
Julio
@juliobash
Próximos cursos de Shell
Cidade         Local Período
Rio de Janeiro EDX 02 a 06/06
São Paulo 4Linux 21 a 25/07
Dou treinamento de Shell em qualquer cidade.
Para mais detalhes, me mande um e-mail.


Em 2 de junho de 2014 20:35, Roberto Warstat address@hidden [shell-script] <address@hidden> escreveu:
 

Perfeito Júlio, era isso mesmo.
Agora a pergunta, o quê faz exatamente o 2>&1 ?

Abraço,
Roberto

Em 02/06/2014 20:21, 'Julio C. Neves' address@hidden [shell-script] escreveu:
 
Roberto, experimente fazer:
ncftpput resto_do_comando > /tmp/erro_word.lst 2>&1


Abcs,
Julio
@juliobash
Próximos cursos de Shell
Cidade         Local Período
Rio de Janeiro EDX 02 a 06/06
São Paulo 4Linux 21 a 25/07
Dou treinamento de Shell em qualquer cidade.
Para mais detalhes, me mande um e-mail.


Em 2 de junho de 2014 20:17, Roberto Warstat address@hidden [shell-script] <address@hidden> escreveu:
 

Alfredo,

Funcionou perfeitamente. Muito obrigado.

Ficou só um problema ainda, no e-mail não está vindo o erro que deu.
Eeu entendo que quando executo
ncftpput resto_do_comando > /tmp/erro_word.lst

A saída do comando ncftpput deveria ir para o arquivo erro_word.lst. E esse arquivo deveria ser enviado para o e-mail em caso de erro.
O quê ocorre é que o arquivo está vazio.

Alguma idéia de como eu poderia resolver isso?

Abraço,
Roberto

Em 02/06/2014 15:12, Roberto Warstat escreveu:
Ok, muito obrigado pela explicação.
Irei testar e depois posto o resultado.

Abraço,
Roberto


Em 2 de junho de 2014 15:11, Alfredo Casanova address@hidden [shell-script] <address@hidden> escreveu:
 
Não.

Existem dois operadores pra testar a saída de um comando: && (AND) e || (OR)

vc pode testar assim:

ls && echo saída OK

isso quer dizer q se a saída do comando ls for 0, ele vai dar o echo.

se vc fizer

ping -c1 0.0.0.1 || echo NAO DEU

ele vai imprimir "NAO DEU" na tela, pq a saída do comando 'ping' será diferente de 0.

É a mesma coisa de testar o $?


2014-06-02 14:46 GMT-03:00 Roberto Warstat address@hidden [shell-script] <address@hidden>:

 
Alfredo,

Pelo que entendi, nesse caso eu sempre vou receber o e-mail, independente se houve erro na transmissão ou não, correto? O quê eu quero é receber somente quando houver erro.

Abraço,
Roberto


Em 2 de junho de 2014 14:34, Alfredo Casanova address@hidden [shell-script] <address@hidden> escreveu:
 
ncftpput -u usuario -p senha -P porta host /diretorio_destino 
/diretorio_origem/word-"$DATA".tar.gz > /tmp/erro_word.lst || echo "Erro no envio do arquivo word - $?" | mutt -s "Erro no ftp" -a /tmp/erro_word.lst -- e-mail_destino


2014-05-31 19:38 GMT-03:00 Roberto Warstat address@hidden [shell-script] <address@hidden>:

 

Pessoal,
Uso o script abaixo para fazer o backup de arquivos e envio para uma
máquina externa via ftp. Na minha lógica, qualquer mensagem que desse na
execução do comando ncftpput seria gravado no arquivo erro_word.lst, no
diretório TMP.
Seguido disso, se a execução do comando ncftpput não fosse feita com
sucesso, um e-mail deveria ser enviado contendo o arquivo erro_word.lst
anexado.
O quê ocorre hoje é que recebo o e-mail mesmo que o comando ncftpput
tenha sido executado com sucesso.

Alguma sugestão do que posso ajustar nesse script para que receba o
e-mail só quando tiver um erro na execução do ftp?

DATA="" +%Y%m%d_%H.%M`
tar -cz -f /diretorio_destino/word-"$DATA".tar.gz /diretorio_origem

ncftpput -u usuario -p senha -P porta host /diretorio_destino
/diretorio_origem/word-"$DATA".tar.gz > /tmp/erro_word.lst

if [ $? -ne 0 ]
then
echo "Erro no envio do arquivo word - $?" | mutt -s "Erro no ftp" -a
/tmp/erro_word.lst -- e-mail_destino
fi

Abraço,
Roberto Warstat




--
[]'s
Alfredo Casanova
Linux User #228230
msn: address@hidden
tel: +55 61 9655 9619





--
[]'s
Alfredo Casanova
Linux User #228230
msn: address@hidden
tel: +55 61 9655 9619








reply via email to

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