Fórum Ubuntu Linux - PT
Suporte Técnico => Servidores => Tópico iniciado por: bred81 em 10 de Setembro de 2009, 14:39
-
Estou construindo um script (bash) de backup que precisa transferir arquivos de um servidor para outro.
Para facilitar a vida da próxima pessoa que vier trabalhar no meu lugar, gostaria de criar um usuário somente para se logar no outro servidor para transferir estes arquivos e sua senha seria de conhecimento dos integrantes do suporte aqui da empresa.
Como deixar documentado o que cada comando faz na hora de exportar as chaves é complicado, até porque, quando eu me for (tomara que demore muito) a pessoa que assumir o meu lugar terá que exporta a chave dela e assim por diante.
Existe alguma maneira de eu usar scp -paramaetro "senha" backup_user@servidor:/diretorio
?
----------
Essa aqui é porque ainda não pesquisei, mas já que estou usando o fórum...
- Como faço para mandar e-mail dizendo que o backup foi realizado com/sem sucesso?
- Dá pra gravar num arquivo de log meu script, todas as ações feitas?
[]'s
-
Boa Tarde,
Em relação ao scp sem senha, sugiro que estude o uso de chaves criptografadas. Estou com a mesma dúvida, e até agora é a melhor solução que eu encontrei. Aqui está um bom artigo sobre oassunto: http://www.vivaolinux.com.br/dica/Utilizando-chaves-publicas-no-SSH-e-SCP
Este é um scrpit que desenvolvi que logava e mandava e-mail. Para enviar e-mail conforme este scrpit, voce deve ter o pacote mailx instalado:
http://www.vivaolinux.com.br/topico/Shell-Script/Funcao-nao-Funciona
-
Fazer por chaves eu sei, e pensando agora, eu até vou criar um usuário e exportar as chaves dele para não precisar ficar trocando.
Agora, fica essa dúvida. Gostaria até de ouvir um "não é possível" do que não ouvir nada...
=)
Valeu a ajuda com o script!
-
bred81 eu não vi seu tópico, acho que to ficando cego.
Precisei usar o scp assim como você, e achei aqui no fórum a solução, veja: aqui (http://ubuntuforum-br.org/index.php/topic,52829.msg306138.html#msg306138).
Eu só tomei o cuidado para no meu script não deixar a senha gravada, então como todas as máquinas o usuário administrador possui a mesma senha, eu a peço no início e deixo na linha do scp a variável com a senha.
Ai quando o script fecha tchau, a senha esta protegida.
-
bred81 eu não vi seu tópico, acho que to ficando cego.
Precisei usar o scp assim como você, e achei aqui no fórum a solução, veja: aqui (http://ubuntuforum-br.org/index.php/topic,52829.msg306138.html#msg306138).
Eu só tomei o cuidado para no meu script não deixar a senha gravada, então como todas as máquinas o usuário administrador possui a mesma senha, eu a peço no início e deixo na linha do scp a variável com a senha.
Ai quando o script fecha tchau, a senha esta protegida.
Ajudou batante!
Aquela dúvida: sshpass = scp?
-
Ajudou batante!
Aquela dúvida: sshpass = scp?
Não. O comando será:
sshpass -p 'senha_do_usuario' scp arquivo_a_copiar usuario_a_copiar@ip:path_destino
Neste exemplo acima estou copiando algo daqui para outra máquina.
-
clcampos,
a pergunta que eu fiz foi errada...
O que quis perguntar foi: sshpass vem instalado com o ssh/scp?
Fiz essa pergunta mais porque estou longe do trabalho, amanhã vou colocar aqui o meu script e por favor, deem uma opinião...
=)
-
clcampos,
a pergunta que eu fiz foi errada...
O que quis perguntar foi: sshpass vem instalado com o ssh/scp?
Fiz essa pergunta mais porque estou longe do trabalho, amanhã vou colocar aqui o meu script e por favor, deem uma opinião...
=)
Se me lembro bem você vai ter que instalar o pacote.
-
bred81 eu não vi seu tópico, acho que to ficando cego.
Precisei usar o scp assim como você, e achei aqui no fórum a solução, veja: aqui (http://ubuntuforum-br.org/index.php/topic,52829.msg306138.html#msg306138).
Eu só tomei o cuidado para no meu script não deixar a senha gravada, então como todas as máquinas o usuário administrador possui a mesma senha, eu a peço no início e deixo na linha do scp a variável com a senha.
Ai quando o script fecha tchau, a senha esta protegida.
hmm. estou curioso. como o seu script faz pra realizar essa operação sem deixar a senha gravada de algum modo?
a princípio, pensei em incluir a senha dentro do próprio script, mas não é a melhor solução.
#!/bin/sh
sshpass -p 'senha' ssh e-teca01.local 'notify-send teste'
sshpass -p 'senha' ssh e-teca02.local 'notify-send teste'
sshpass -p 'senha' ssh e-teca03.local 'notify-send teste'
depois, pensei em passar a senha como argumento:
#!/bin/sh
sshpass -p '$@' ssh e-teca01.local 'notify-send teste'
sshpass -p '$@' ssh e-teca02.local 'notify-send teste'
sshpass -p '$@' ssh e-teca03.local 'notify-send teste'
./script senha
mas assim, a senha fica salva no arquivo ~/.bash_history.
como você fez? algum mecanismo que o script peça pra digitar a senha dentro da execução do mesmo?
-
Basta pedir a senha ao se executar o script.
Acho a melhor opção nesse caso.
Ou então vai ter que complicar e usar criptografia do arquivo com a senha. Mas nesse caso existem outras formas melhores de usar o ssh sem necessitar de senha.
-
hmm. poderia mostrar o trecho do script que o faz pedir a senha ao ser executado, pra em seguida jogar como argumento pros comandos seguintes?
-
hmm. poderia mostrar o trecho do script que o faz pedir a senha ao ser executado, pra em seguida jogar como argumento pros comandos seguintes?
Posso sim. Para rodar o script que vou colar aqui você deve ter o dialog (acho que já vem instalado) e o zenity instalados.
Para confirmar digite:
sudo aptitude install zenity
O script (que só faz pegar a senha de três formas diferentes e depois apresentá-la) é:
#!/bin/bash
#
# Script que pede sendo usuário de três formas
#
# Cristiano
# 16/Set/2009
#
#
# Via console - usando "echo"
################################
clear # Limpando a tela
echo -e "Informe a senha para acesso: \033[8m\c"
read senha
echo -e "\033[0m"
echo -e "\n\nA senha digitada foi: \033[1m$senha\033[0m\n\nTecle <\033[1mEnter\033[0m> para continuar."
read espera
#
# Via console - usando dialog
###################################
senha=$( dialog --stdout --passwordbox "Informe a senha para acesso:" 10 40 2>&1 )
dialog --msgbox "A senha digitada foi: $senha" 8 40
#
# Agora usando o zenity
####################################
senha=$( zenity --entry --text "Informe a senha para acesso:" --hide-text )
zenity --info --text "A senha digitada foi: $senha"
Para usar a senha digitada (pegando o script como exemplo) basta usar no lugar da senha a variável $senha, que foi a variável que usei em todas as 3 formas.
-
Olha como de vez em quando a gente não pensa...
A gente acabou optando por essa solução:
Vamos compartilhar a pasta que precisava acessar na rede, dando permissão de leitura/escrita/execução somente para os usuários de um determinado grupo.
Depois vamos colocar esta pasta pra montar automaticamente e tudo fica uma belezura!
-
muito obrigado, cara. agora que a senha é recebida pelo script, isso vai facilitar muito o trabalho da gente aqui. não vou precisar mais redigitar a mesma senha 35 vezes.
-
Posso colocar resolvido no tópico?
-
Posso colocar resolvido no tópico?
Acho que sim, né?!?!