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

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

Re: [shell-script] Re: Dúvida com variáveis


From: Cristiano Amaral
Subject: Re: [shell-script] Re: Dúvida com variáveis
Date: Tue, 13 Nov 2012 07:35:54 -0200

Cristiano, acho melhor usar uma variavel do que um cat...

ARQ=/root/arquivo.txt
servidores="maquina1 maquina2 maquina3"
for SERVER in $(cat servidores.txt) ; do
echo "Digite a senha para o servidor ${SERVER}"
scp ${ARQ} ${SERVER}:/root/
sleep 1
done


ARQ=/root/arquivo.txt
> for SERVER in $(cat servidores.txt) ; do
> echo "Digite a senha para o servidor ${SERVER}"
> scp ${ARQ} ${SERVER}:/root/
> sleep 1
> done

Em 12 de novembro de 2012 23:16, Tiago Peczenyj
<address@hidden>escreveu:

> é ate possivel criar variaveis
>
> DIR1
> DIR2
> ...
> mas é tanto esforço e fica tão ilegivel que ou vc cria um array ou não cria
> variavel nenhuma, leia como o Cristiano ensinou
>
> 2012/11/12 Cristiano <address@hidden>
>
> > **
> >
> >
> >
> >
> > --- Em address@hidden, Pedro Renato Martelotta
> <het_net@...>
> > escreveu
> > >
> > > Pessoal,
> > >
> > > Estava fazendo um script para enviar um arquivo para vários
> servidores. A
> > > dúvida é: como ler uma variével dentro de outra?
> > > Segue uma parte do código (está errado, é só pra clarear a dúvida):
> > >
> > > ...
> > > *# Lista de servidores a receber o arquivo (13 servidores)
> > > SVR1=servidor20
> > > ...
> > > SVR12=servidor28
> > > SVR13=servidor50
> > >
> > > # Localização do arquivo
> > > ARQ=/root/arquivo.txt
> > >
> > > # Envio via SCP
> > > for i in $(seq 13)
> > > do
> > > CONT=SVR${i}
> > > echo "Digite a senha para o servidor ${CONT}"
> > > scp ${ARQ} ${CONT}:/root/
> > > sleep 1
> > > done*
> > >
> > > Antes disso, tinha pensado em ${SVR${i}}, mas não funciona. Alguém
> > entendeu
> > > o que quis fazer e poderia me ajudar?
> > >
> > >
> > > [As partes desta mensagem que não continham texto foram removidas]
> > >
> >
> > Pedro, boa noite.
> >
> > O que você está tentando fazer pode ser feito usando vetores (arrays).
> > Porém, vetores não estão disponíveis para qualquer interpretador. Nem
> mesmo
> > no bash eles existem em todas as versões (se não me falha a memória, só
> da
> > 4.0 para frente).
> >
> > Mas fazer o que você quer é muito mais simples, usando o while e o
> > redirecionamento de entrada (<). Deste modo, você não precisa definir
> > variáveis no arquivo que relaciona os servidores. Basta listar os
> > endereços, tipo:
> >
> > $ cat servidores.txt
> > servidor1
> > servidor2
> > ...
> > servidorN
> >
> > Com os arquivos nomeados linha por você pode fazer algo assim:
> >
> > ARQ=/root/arquivo.txt
> > while read SERVER ; do
> > echo "Digite a senha para o servidor ${SERVER}"
> > scp ${ARQ} ${SERVER}:/root/
> > sleep 1
> > done < servidores.txt
> >
> > Outra maneira de fazer isso com o "for" seria lendo o conteúdo do mesmo
> > arquivo servidores.txt (sem a atribuição de variáveis) à partir de uma
> > subshell, tipo:
> >
> > ARQ=/root/arquivo.txt
> > for SERVER in $(cat servidores.txt) ; do
> > echo "Digite a senha para o servidor ${SERVER}"
> > scp ${ARQ} ${SERVER}:/root/
> > sleep 1
> > done
> >
> > E, por fim, você consegue fazer isso sem ter que digitar senha, usando
> > autenticação por par de chaves. Mas, para isso, teria que configurar cada
> > servidor (/etc/ssh/sshd_config) para aceitar a autenticação por par de
> > chaves, além de copiar, ao menos, a chave pública do usuário para o
> > servidor de destino (em ~/.ssh).
> >
> > Talvez configurar isso dê tanto ou mais trabalho que copiar manualmente
> os
> > arquivos. Entretanto, dependendo da recorrência da replica dos arquivos,
> > vale a pena configurar o acesso por chaves (além de ser muito mais seguro
> > que a autenticação por senha).
> >
> >
> >
>
>
>
> --
> Tiago B. Peczenyj
> Linux User #405772
>
> http://pacman.blog.br
>
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>
>
> ------------------------------------
>
> ---------------------------------------------------------------------
> Esta lista não admite a abordagem de outras liguagens de programação, como
> perl, C etc. Quem insistir em não seguir esta regra será moderado sem
> prévio aviso.
> ---------------------------------------------------------------------
> Sair da lista: address@hidden
> ---------------------------------------------------------------------
> Esta lista é moderada de acordo com o previsto em
> http://www.listas-discussao.cjb.net
> ---------------------------------------------------------------------
> Servidor Newsgroup da lista: news.gmane.org
> Grupo: gmane.org.user-groups.programming.shell.brazil
>
> Links do Yahoo! Grupos
>
>
>


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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