Set 02 2009

Conectar ao SSH pelo Python.

Boa noite,

Ontem comentei sobre a utilização do pexpect para executar comandos e se comunicar com eles. Hoje brinquei um pouco mais com essa biblioteca e fiz um exemplo de conexão e enviar o comando ‘uptime’ para o servidor. Só um exemplo simples, mas acredito que já da uma idéia de como você pode mexer com essa biblioteca.

Primeiramente você deve ter a biblioteca pexpect instalada. Você pode obte-la em http://sourceforge.net/projects/pexpect/ e para instalar você deve digitar

$ sudo python setup.py install

Após a mesma instalada você já pode se divertir. O pequeno script que fiz para testar foi o seguinte:

import pexpect

class SSH():
def connect(self):
x = True
sshConnection = pexpect.spawn(‘ssh -l matheus -p 22 192.168.0.254′)
sshConnection.expect(‘matheus@192.168.0.254\’s password:’)
sshConnection.sendline(‘senha’)
while True:
print sshConnection.readline();
if x is True:
sshConnection.sendline(‘uptime’)
x = False
sshConnection.readline();

s = SSH()
s.connect()

Bom, o código é auto-explicativo e caso você tenha algum problema para entender, não hesite em entrar em contato,
Matheus Bratfisch

PS: Caso tenha algum problema execute o seguinte comando: $ sudo apt-get install python-dev

PS2: Maldita indentação. Caso você deseje baixe aqui o Conectar ao SSH pelo Python

Set 02 2009

Executando comandos no terminal e passando parametros em Python.

Boa noite,

Estou a alguns dias procurando um método para apartir do Python conseguir executar programas na shell e passar parametros (“responder” as perguntas desse programa.). Por exemplo, você deseja fazer um script em python que automaticamente se autentica em um servidor ssh, ou seja inicia o SSH e passa a senha para o mesmo automaticamente. Após alguns tempos de pesquisa, descobri o subprocess.Popen, porém o mesmo não conseguia matar minha necessidade, quando se tratava de inserir as senhas as mesmas não iam. Li no gossamer-threads que o problema é devido ao SSH não aceitar conteudo para senhas provenientes do stdin, somente do pty então me parece que é necessário algum tipo de simulação. No mesmo tópico deste forum recomendam a utilização da biblioteca pexpect e com a mesma obtive sucesso, não tive tempo de brincar o suficiente com ela, mas do recado básico e inicial ela deu conta.

Quem sabe em alguns dias não posto alguns exemplos, mas fica aqui a dica para você que possui problema semelhante.

Att,
Matheus