Fórum Ubuntu Linux - PT

Suporte Técnico => Servidores => Tópico iniciado por: bred81 em 10 de Setembro de 2009, 14:39

Título: [REOSLVIDO] scp pode receber a senha do usuário como parâmetro?
Enviado 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
Código: [Selecionar]
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
Título: Re: scp pode receber a senha do usuário como parâmetro?
Enviado por: bruno_moita em 11 de Setembro de 2009, 16:42
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
Título: Re: scp pode receber a senha do usuário como parâmetro?
Enviado por: bred81 em 11 de Setembro de 2009, 20:51
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!
Título: Re: scp pode receber a senha do usuário como parâmetro?
Enviado por: clcampos em 11 de Setembro de 2009, 23:23
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.
Título: Re: scp pode receber a senha do usuário como parâmetro?
Enviado por: bred81 em 12 de Setembro de 2009, 18:34
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?
Título: Re: scp pode receber a senha do usuário como parâmetro?
Enviado por: clcampos em 12 de Setembro de 2009, 18:54
Ajudou batante!
Aquela dúvida: sshpass = scp?

Não. O comando será:

Citar
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.
Título: Re: scp pode receber a senha do usuário como parâmetro?
Enviado por: bred81 em 13 de Setembro de 2009, 20:19
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...
=)
Título: Re: scp pode receber a senha do usuário como parâmetro?
Enviado por: clcampos em 13 de Setembro de 2009, 20:38
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.
Título: Re: scp pode receber a senha do usuário como parâmetro?
Enviado por: Solid One em 16 de Setembro de 2009, 18:12
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.

Código: [Selecionar]
#!/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:

Código: [Selecionar]
#!/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?
Título: Re: scp pode receber a senha do usuário como parâmetro?
Enviado por: clcampos em 16 de Setembro de 2009, 18:21
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.
Título: Re: scp pode receber a senha do usuário como parâmetro?
Enviado por: Solid One em 16 de Setembro de 2009, 18:55
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?
Título: Re: scp pode receber a senha do usuário como parâmetro?
Enviado por: clcampos em 16 de Setembro de 2009, 20:31
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:

Código: [Selecionar]
sudo   aptitude   install   zenity
O script (que só faz pegar a senha de três formas diferentes e depois apresentá-la) é:

Citar
#!/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.
Título: Re: scp pode receber a senha do usuário como parâmetro?
Enviado por: bred81 em 16 de Setembro de 2009, 21:35
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!
Título: Re: scp pode receber a senha do usuário como parâmetro?
Enviado por: Solid One em 18 de Setembro de 2009, 10:08
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.
Título: Re: scp pode receber a senha do usuário como parâmetro?
Enviado por: bred81 em 18 de Setembro de 2009, 15:15
Posso colocar resolvido no tópico?
Título: Re: scp pode receber a senha do usuário como parâmetro?
Enviado por: clcampos em 18 de Setembro de 2009, 16:00
Posso colocar resolvido no tópico?

Acho que sim, né?!?!