[FUG-BR] Redirecionamento de scp em shell script não funciona.
Nilton OS
jniltinho em gmail.com
Sábado Abril 12 09:46:32 BRT 2014
Porque não use rsync, acho que é mais simples, desse modo não precisar
passar senha de user.
Coloca rsync server na máquina destino, configura os acesso e pronto.
..............................................................................................
*Nilton OS* | *Working Linux 15 years ago* |
linuxpro.com.br<http://www.linuxpro.com.br>
*"**Só tem o direito de criticar aquele que pretende ajudar. AL"*
Em 12 de abril de 2014 09:03, Renato Botelho <rbgarga em gmail.com> escreveu:
> On Sex, 2014-04-11 at 17:59 -0300, Paulo Henrique - BSDs Brasil wrote:
> > Saudações,
> >
> > Estou com um problema quanto a redirecionamento do stdout e stderror do
> > scp para um arquivo durante a copia.
> > Pesquisando achei a mesma duvida respondida pelo Eduardo Schoedler
> > informou porem sem exito[1].
> >
> > E todos os redirecionamentos que tentei não deram certo.
>
> A primeira pergunta é, qual o shell? (/bin/sh, /bin/csh)? Como você não
> postou o shebang aqui não dá pra saber e isso muda muita coisa. Vou
> responder considerando que seja /bin/sh, se não for me dá um toque.
>
> > #Variaveis Gerais não alteraveis.
> >
> > DATA=`date "+%d-%m-%Y"`
> > SSHSERVER=hostname.intranet
> > SSHUSER=root
> > DIRBASE="$SSHUSER@$SSHSERVER:/mnt/BKPS/DOMINIO01/$DATA/"
>
> Uma boa prática aqui é sempre colocar as variáveis entre {} para evitar
> que o shell se confunda e pense que o @ é parte do nome da variável, por
> exemplo:
>
> DIRBASE="${SSHUSER}@${SSHSERVER}:..."
>
> Outra pergunta, o diretório ${DATA} existe no servidor remoto? Se ele
> não existir vai dar problema se eu me lembro bem. O que você pode fazer
> pra garantir é rodar algo assim antes:
>
> ssh -p 6666 ${SSHUSER}@${SSHSERVER} \
> "mkdir -p /mnt/BKPS/DOMINIO01/${DATA}"
>
> > #Iniciando o Backup
> > echo "Entrando no diretorio do servidor de arquivos"
> > cd /storage/Compartilhamentos/
> > echo "Diretorio Corrente"
> > pwd
> >
> >
> > DIR=Administracao
> > echo "Efetuando o backup do Compartilhamento $DIR Para hostname" >>
> > /var/log/backups-$DIR-$DATA.log ( Essa linha é escrita )
> > scp -rv -P 6666 $DIR $DIRBASE >> /var/log/backups-$DIR-$DATA.log ( Essa
> > linha NÃO é escrita )
> > echo "O Backup do Diretorio $DIR Foi concluido com exito" >>
> > /var/log/backups-$DIR-$DATA.log ( Essa linha é escrita )
>
> O > e o >> vai escrever ou adicionar o conteúdo do stdout no arquivo,
> enquanto o 2> e 2>> faz o mesmo para stderr, então vale redirecionar o
> stderr para o stdout assim você garante que tudo seja gravado.
>
> scp -rv -P 6666 ${DIR} ${DIRBASE} >> /var/log/.... 2>&1
>
> Eu fiz um pequeno teste aqui só pra comprovar:
>
> scp -v file server: >o 2>e
>
> E confirmei que o scp -v escreve em stderr, no final das contas o
> arquivo 'o' estava vazio e o 'e' tinha os dados, então a linha com 2>&1
> deve resolver. :)
>
> []s
> --
> Renato Botelho
>
> -------------------------
> Histórico: http://www.fug.com.br/historico/html/freebsd/
> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
>
Mais detalhes sobre a lista de discussão freebsd