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: Tiago Peczenyj
Subject: Re: [shell-script] Re: Dúvida com variáveis
Date: Mon, 12 Nov 2012 23:16:09 -0200

é 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]



reply via email to

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