def ssh_clientes(user,hostname,ip_addr,porta):
ssh_newkey = 'Are you sure you want to continue connecting'
password = 'ro...@192.168.0.152\'s password:'
passfrase = 'Enter passphrase for key \'/home/user/.ssh/id_dsa\':'
p=pexpect.spawn("ssh ro...@192.168.0.152 -vv")
i=p.expect([ssh_newkey,password,passfrase,pexpect.EOF])
if i==0:
print("teste")
p.sendline('yes')
#i=p.expect([ssh_newkey,passphase,pexpect.EOF])
if i==1:
p.sendline("senha")
#p.expect(pexpect.EOF)
if i==2:
p.sendline("")
elif i==3:
pass
print p.before # print out the result
Quando roda o sistema, ele pede a senha em uma janela gui. O que eu
quero é somente rodando python2.6 sistema.py, ele me retorne um shell
conectado no cliente.
Obrigado a todos.
--
Thiago Silveira Alexandre
Security Enginner
Intechne Tecnologia da Informação
(98) 3311 6200
(98) 3311 6219
(98) 8132 1020
------------------------------------
,-----------------------------------------------------------.
| Antes de enviar um e-mail para o grupo leia: |
| http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar |
| E se você é usuário do BOL lembre-se de cadastrar o |
| e-mail do grupo na lista branca do seu sistema anti-spam. |
`-----------------------------------------------------------´Links do Yahoo! Grupos
<*> Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/python-brasil/
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@yahoogrupos.com.br
<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html
Se você quiser somente um terminal conectado ao cliente, é melhor usar a
biblioteca python-vte.
Um exemplo de utilização:
#!/usr/bin/env python
import gtk
import vte
window = gtk.Window()
window.connect('destroy', lambda w: gtk.main_quit())
terminal = vte.Terminal()
child_pid = terminal.fork_command('ssh', ['ssh', 'localhost'])
window.add(terminal)
window.show_all()
gtk.main()
Com alguns artifícios podemos fazer o vte perceber a solicitação de uma
senha. Você mencionou estar desenvolvendo um sistema para facilitar as suas
conexões ssh, como seria esse sistema. Por coincidência também estou fazendo
um "sistema para gerenciar conexões remotas". Para evitar re-trabalho
podemos juntar esforços, caso nosso projeto seja compatível.
Qualquer coisa entra em contato.
Até mais...
Magnun Leno
2010/3/22 thiago <ths...@gmail.com>
>
>
> Senhores, essa é a minha primeira participacão na lista.
> Estou tentando criar um sistema pra facilitar a minha conexão ssh com os
> clientes aqui da empresa usando python e pexpect.
> Abaixo o código:
>
> def ssh_clientes(user,hostname,ip_addr,porta):
>
> ssh_newkey = 'Are you sure you want to continue connecting'
> password = 'ro...@192.168.0.152 <%27root%40192.168.0.152>\'s password:'
> passfrase = 'Enter passphrase for key \'/home/user/.ssh/id_dsa\':'
> p=pexpect.spawn("ssh ro...@192.168.0.152 <root%40192.168.0.152> -vv")
> i=p.expect([ssh_newkey,password,passfrase,pexpect.EOF])
> if i==0:
> print("teste")
> p.sendline('yes')
> #i=p.expect([ssh_newkey,passphase,pexpect.EOF])
> if i==1:
> p.sendline("senha")
> #p.expect(pexpect.EOF)
> if i==2:
> p.sendline("")
> elif i==3:
> pass
> print p.before # print out the result
>
> Quando roda o sistema, ele pede a senha em uma janela gui. O que eu
> quero é somente rodando python2.6 sistema.py, ele me retorne um shell
> conectado no cliente.
> Obrigado a todos.
>
> --
> Thiago Silveira Alexandre
> Security Enginner
> Intechne Tecnologia da Informação
> (98) 3311 6200
> (98) 3311 6219
> (98) 8132 1020
>
>
>
[As partes desta mensagem que não continham texto foram removidas]
O ssh tem medidas de segurança próprias para impedir que você faça login
interativo usando scripts dessa forma. No entanto existem bibliotecas, como
o paramiko, que fazem a mesma coisa. Eu já estudei um pouco o paramiko mas
nunca usei então não posso dizer se é fácil ou não, mas acho que é a melhor
dica para você.
Carlos Ribeiro
2010/3/22 thiago <ths...@gmail.com>
--
Carlos Ribeiro
Consultoria em Projetos
twitter: http://twitter.com/carribeiro
blog: http://rascunhosrotos.blogspot.com
mail: carri...@gmail.com
[As partes desta mensagem que não continham texto foram removidas]
------------------------------------
[1]
http://jessenoller.com/2009/02/05/ssh-programming-with-paramiko-completely-different/
2010/3/22 Magnun Leno <magnu...@gmail.com>
--
"Forgive, O Lord, my little jokes on Thee, and I'll forgive Thy great big
joke on me."
http://pyevolve.sourceforge.net/wordpress/
Eu sou totalmente contra essa abordagem, a não ser que seus fins sejam didáticos. Você vai MESMO armazenar uma senha SSH em plain
text no seu script ? Era melhor utilizar somente o par de chaves para pular a requisição de senha do SSH e executar o que vc precisa.
Seu par de chaves não tem senha mesmo ? Se não tem, por ue ela está sendo pedida ? Se está sendo pedida, você a está mandando em
branco ( if i==2 ) propositalmente ?
De novo, espero que isso seja somente para fins didáticos e você não tenha intenção de implantar isso em um ambiente de produção.
Zero no conceito segurança.
- --
Um abraço
.0. MrBiTs - mrbit...@gmail.com
..0 GnuPG - http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x6EC818FC2B3CA5AB
000 http://www.mrbits.com.br
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
iQEcBAEBCAAGBQJLqIhrAAoJEG7IGPwrPKWrc90H/015WfVxP+HS/YwggmzpYrs0
TgI7TlFgqFdqDRmbwyYWo+L3po0YTmC4EPMDXrktFeXiLL+SId8ifdNtmh29gIVL
RVRCCU8U2pg+O4YlZoQ2Xo//ZBVD63rtMgvrcSQC6KOkQwn61SWDO0evLkF6GNp0
b8/bgiwaV2MAGz5MDrHy7I3KHN/4+20OxI42Neav9BN+5I7jFNY8/O8Dc5bZUBYI
xRNLr2LOHq5jdchMItCTGQ+5aF/KMqSqD7p90kAVb9P7YIFzvm4j0m1TyMw5O/KW
vJFoHRsKzMYFyzLQmCLNtqiiWiF/5swLMZYPkLJtkoyVJHEuWop+ZJE7Z3KM1H4=
=JhDq
-----END PGP SIGNATURE-----
--
Thiago Silveira Alexandre
Security Enginner
Intechne Tecnologia da Informação
(98) 3311 6200
(98) 3311 6219
(98) 8132 1020
------------------------------------
Marco André
2010/3/23 thiago <ths...@gmail.com>
--
Marco André
marco...@gmail.com
http://www.google.com.br/profiles/marcoandre
[As partes desta mensagem que não continham texto foram removidas]
------------------------------------
On Tue, Mar 23, 2010 at 08:11:18AM -0300, thiago wrote:
> MrBiTs,
> Eu conheco os riscos que estou correndo quando se fala em seguranca.
> Pois é Magnun,
> eu faco muitas conexões ssh durante meu dia e acaba se tornando chato,
[...]
Você já tentou utilizar o screen[1]? Dessa forma você pode
deixar mais de uma conexão aberta concorremente e não precisa se
conectar toda vez que precisar acessar um servidor. Eu também tenho
que me conectar em vários servidores SSH todos os dias e usando uma
solução com screen + chaves SSH (*com* senha) acha que isso se torna
relativamente simples.
[1]. http://en.wikipedia.org/wiki/GNU_Screen
- --
Atenciosamente,
Arthur Furlan (afurlan)
afu...@afurlan.org
http://blog.afurlan.org
Public GPG KeyID: 27D81084
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
iQIcBAEBCAAGBQJLqMgRAAoJEOW5JtQn2BCEqYAQAIoH1zla9dN70T+2XEMggVNq
+FNKhXTXECUcPkwWAEWi+A++1L8FhOCaT98pzrFOFZVqYKR7mKW5mMFGjV1ESZnI
UJglKmNv6CgXcbBTKuNT0GAPl4CRa0Plog+288EJLGknf2LZzw/0VAU/hZ9bgR1Y
i9+etpYjg3aNJx56mw/sNNqHL101N79KUywWyB5if+lwF59bNP33qY3QEmpuww7k
yOk6XRb0TEl6a7hDcWfLzYzbjfzmfJHCB9dmcnksSPs+UnUVdr6kN5YVditsTuED
LBL6O86hyDe2zfoTrWJisiKeMjdH6QNiBtu81D2vYYS10HxcWxsqdhAU76c5oANc
3x9nN14pXiI/6b43ZPZmGbHOLqp5nee/3m2jgeoiK6daGRSGxYn9b/rlnZBK6wtc
Kv+jHlNlhy9UBhVcU3hON+ulzmfGNoCyOhe9ly8fxlH8Q7E2r3tBwFU0wXBK/H9/
+Qq/6fiCfInTDc2eNQOj6E67zIsVW5rWDnFew3xuw0OkamRSorlV20k3cePdmTFp
XucXxx15FIImQdeJcCYOUIB/nAv9b/sMurHYIG9sb5COC/VVm8wpb1NovznYsw88
JwrCDSQRiI+Qcfw7N85flccVQtsmCpfxq1KcHQACsTHZgmC+CCBCY4hP3hRLhy0H
BHkOK3Ps9gsskK4nXx/+
=RS/F
-----END PGP SIGNATURE-----
Só para ficar registrado, o GNU Screen possui vários recursos também que
ajudam muito, como abrir várias janelas na mesma tela, copiar e colar,
pode desconectar do terminal e acessar de outro terminal a mesma janela
(não é encerrada junto com a sessão, ie: deixar um aplicativo rodando em
foreground e poder acessá-lo de qualquer sessão), duas pessoas podem
acessar a mesma janela a mesmo tempo e ver a edição em tempo real (ie:
para orientar alguém), um roteiro básico do GNU Screen pode ser
encontrado aqui[1].
O GNU Screen trabalha com terminais virtuais, bastaria então abrir uma
sessão SSH em cada janela. Ele também permite setar qual interpretador
utilizar, então você poderia fazer um shellscript que solicitasse user
,host/ip,porta que faria um exec no cliente ssh e já efetuasse a
conexão, e setar este script como shell ai toda nova janela que abrisse
já cairia numa nova sessão pronta para conexão.
[1] http://en.flossmanuals.net/CommandLineIntro/GNUScreen
A[]'s
Em 23/3/2010 10:54, Arthur Furlan escreveu:
>
>
> On Tue, Mar 23, 2010 at 08:11:18AM -0300, thiago wrote:
>> MrBiTs,
>> Eu conheco os riscos que estou correndo quando se fala em seguranca.
>> Pois é Magnun,
>> eu faco muitas conexões ssh durante meu dia e acaba se tornando chato,
> [...]
>
> Você já tentou utilizar o screen[1]? Dessa forma você pode
> deixar mais de uma conexão aberta concorremente e não precisa se
> conectar toda vez que precisar acessar um servidor. Eu também tenho
> que me conectar em vários servidores SSH todos os dias e usando uma
> solução com screen + chaves SSH (*com* senha) acha que isso se torna
> relativamente simples.
>
> [1]. http://en.wikipedia.org/wiki/GNU_Screen
> <http://en.wikipedia.org/wiki/GNU_Screen>
>
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
iEYEARECAAYFAkuozL8ACgkQ7OAY7mv8Bhmv7wCdHgc0FbDkOsdmzYRbOatQu+RJ
Bf8AnioGFOlTLhFg++1MpTDHQB6W75mg
=dH0C
Marco André Lopes Mendes wrote:
>
>
> Não é possível usar a autenticação por chaves no SSH ao invés de passar a
> senha a cada conexão? Isso não ajudaria a resolver o seu problema?
>
> Marco André
>
> 2010/3/23 thiago <ths...@gmail.com <mailto:thsalex%40gmail.com>>
>
> > MrBiTs,
> > Eu conheco os riscos que estou correndo quando se fala em seguranca.
> > Pois é Magnun,
> > eu faco muitas conexões ssh durante meu dia e acaba se tornando chato,
> > embora essa automatizacão da conexão apenas passando o nome do cliente
> > seja insegura, seria interessante automatizar. Vou te mandar um e-mail
> > pessoal com meu contato no skype pra gente conversar mais a respeito.
> > Obrigado a todos pelas dicas, vou estuda-las e ver qual seria a mais
> > apropriada pra mim e se ainda tiverem outras pessoas com sugestões, por
> > favor falem.
> > Abraco a todos.
> > > On 03/22/2010 05:39 PM, thiago wrote:
> > > > Senhores, essa é a minha primeira participacão na lista.
> > > > Estou tentando criar um sistema pra facilitar a minha conexão
> ssh com
> > os
> > > > clientes aqui da empresa usando python e pexpect.
> > > > Abaixo o código:
> > >
> > > > def ssh_clientes(user,hostname,ip_addr,porta):
> > >
> > > > ssh_newkey = 'Are you sure you want to continue connecting'
> > > > password = 'ro...@192.168.0.152
> <mailto:%27root%40192.168.0.152>\'s password:'
> > > > passfrase = 'Enter passphrase for key \'/home/user/.ssh/id_dsa\':'
> > > > p=pexpect.spawn("ssh ro...@192.168.0.152
> <mailto:root%40192.168.0.152> -vv")
> > ,----------------------------------------------------------.
> > | Antes de enviar um e-mail para o grupo leia: |
> > | http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar
> <http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar> |
> > | E se você é usuário do BOL lembre-se de cadastrar o |
> > | e-mail do grupo na lista branca do seu sistema anti-spam. |
> > `----------------------------------------------------------´Links do
> > Yahoo! Grupos
> >
> >
> >
>
> --
> Marco André
> marco...@gmail.com <mailto:marcoandre%40gmail.com>
> http://www.google.com.br/profiles/marcoandre
> <http://www.google.com.br/profiles/marcoandre>
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>
--
Thiago Silveira Alexandre
Security Enginner
Intechne Tecnologia da Informação
(98) 3311 6200
(98) 3311 6219
(98) 8132 1020
------------------------------------
,-----------------------------------------------------------.
| Antes de enviar um e-mail para o grupo leia: |
| http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar |
| E se você é usuário do BOL lembre-se de cadastrar o |
| e-mail do grupo na lista branca do seu sistema anti-spam. |
`-----------------------------------------------------------´Links do Yahoo! Grupos
<*> Para visitar o site do seu grupo na web, acesse:
Pra facilitar o uso do ssh, eu sugiro:
- Cadastrar os IPs dos hosts no arquivo /etc/hosts e usar o
autocompletion do bash;
- Criar chaves em todos os hosts com ssh-keygen e usar o esquema de
login automático sem senha, apenas com troca de chave pública [1] (use o
ssh-copy-id pra copiar as chaves);
- Usar o "master mode" do ssh para compartilhar conexões [2] (login
instantâneo reutilizando conexões! Essencial pro svn/git/scp.);
- Configurar parâmetros adequados no ~/.ssh/config como User, Port,
ForwardX11, CompressionLevel etc;
- Usar o screen, para "multiplexar" o acesso, como já recomendaram aqui;
- Usar o cssh [3] para acessar máquinas em cluster (indispensável pra
administrar clusters);
Isso tudo facilita e automatiza o uso do ssh, o que permite usá-lo de
forma mais simples. Exemplos:
# ssh producao
# tar cf - . | ssh host 'cd /tmp ; tar xf -'
# mysqldump -uroot -psenha banco | ssh dbhost 'mysql -uroot -psenha
banco'
# cssh node1 node2 node3 node4
[1] http://www.google.com.br/search?q=ssh+key+authentication
[2] http://www.google.com.br/search?q=ssh+master+mode
[3] http://www.google.com.br/search?q=cssh
--
[]s, Narcélio
Automação é sempre uma ótima! Para automatizar tarefas em servidores remotos
eu uso e recomendo o Fabric [1].
Assim eu tento me manter sempre "uma camada de abstração acima". Identifico
as várias operações rotineiras nos servidores e monto as receitas
implementando comandos no Fabric.
Acho que vale dar uma olhada.
[1] http://docs.fabfile.org/0.9.0/
Abraços,
--
Henrique Bastos
henr...@bastos.net
http://henriquebastos.net
+55 21 9618-6180
2010/3/24 Narcélio Filho <narc...@gmail.com>
[As partes desta mensagem que não continham texto foram removidas]
------------------------------------
2010/3/24 Henrique Bastos <henr...@bastos.net>
>
>
> Falae!
>
> Automação é sempre uma ótima! Para automatizar tarefas em servidores
> remotos
> eu uso e recomendo o Fabric [1].
>
> Assim eu tento me manter sempre "uma camada de abstração acima". Identifico
> as várias operações rotineiras nos servidores e monto as receitas
> implementando comandos no Fabric.
>
> Acho que vale dar uma olhada.
>
> [1] http://docs.fabfile.org/0.9.0/
>
> Abraços,
> --
> Henrique Bastos
> henr...@bastos.net <henrique%40bastos.net>
> http://henriquebastos.net
> +55 21 9618-6180
>
> 2010/3/24 Narcélio Filho <narc...@gmail.com <narcelio%40gmail.com>>
--
Atenciosamente,
Renato Garcia Pedigoni
!/usr/bin/env python
#lista de servidores
sincroniza =["server1.domain","server2.domain", "server3.domain"]
import pexpect
import sys
from threading import Thread
#usuario e senha podem ser colocados em um arquivo.ini ou
estaticamente nesse arquivo
#Testa a lista de parâmetros
try:
if sys.argv[3]:
pass
except:
print "Uso: " + "script" + " <comando entre aspas> <usuario> <senha>"
sys.exit()
#essa função inicia o envio dos comandos passados como argumentos.
def executor(comando,usuario,senha,servidor):
a = 'ssh ' + usuario + '@' + servidor
foo = pexpect.spawn(a)
foo.expect('.*ssword:')
foo.sendline(senha)
foo.sendline('su')
foo.expect('.*sword:')
foo.sendline('senha_secreta')
foo.sendline(comando + '&& exit')
print "comando e saida para: " + servidor + "..........[OK]"
foo.sendline('exit')
foo.expect('.*osed.')
foo.interact()
#cria uma lista...
tasks = []
#loop com thread da funcao executor
for i in sincroniza:
t = Thread(target=executor,args=(sys.argv[1],sys.argv[2],sys.argv[3],i))
t.start()
tasks.append(t)
#aguarda a finalização de todas as tarefas.
for t in tasks:
t.join()
2010/3/26 Renato Garcia Pedigoni <renatop...@gmail.com>:
--
Djames Suhanko
LinuxUser 158.760