Overview

Na semana passada escrevi um artigo sobre o módulo pexpect em Python e como o pode usar para tratar de algumas das necessidades de automatização, como ssh e ftp.

Quero continuar sobre esse tópico e escrever sobre a sua classe pxssh. Com o módulo pxssh, é fácil aceder a outros servidores através do SSH. Este artigo é baseado na documentação oficial aqui encontrada: http://pexpect.sourceforge.net/pxssh.html

O que é pxssh?

Pxssh é baseado em pexpect. A sua classe estende o pexpect.spawn para se especializar na instalação de ligações SSH. Utilizo frequentemente pxssh para fazer ligações ssh em python.

Documentação do módulo

Abrir um terminal e digitar os seguintes comandos para obter ajuda sobre o módulo

Pode também ver a ajuda aqui http://pexpect.sourceforge.net/pxssh.html

Métodos e processo de login

Pxssh adiciona métodos para login, logout, e esperando a concha pronta. Faz várias coisas complicadas para lidar com muitas situações no processo de login do SSH.

Por exemplo, se a sessão for o seu primeiro login, então pxssh aceita automaticamente o certificado remoto; ou se tiver configuração de autenticação de chave pública então pxssh não vai esperar pela prompt de senha.

Como funciona pxssh?

pxssh usa a prompt da shell para sincronizar a saída do hospedeiro remoto. A fim de tornar isto mais robusto, define a prompt shell para algo mais único do que apenas $ ou #.

Isto deve funcionar na maioria das shells estilo Borne/Bash ou Csh.

Exemplo

Este exemplo executa alguns comandos num servidor remoto e imprime o resultado.

Primeiro importamos os módulos de que precisamos. (pxssh e getpass)

Importamos o módulo getpass, que solicitará ao utilizador uma palavra-passe, sem fazer eco do que digitam na consola.

import pxsshimport getpasstry: s = pxssh.pxssh() hostname = raw_input('hostname: ') username = raw_input('username: ') password = getpass.getpass('password: ') s.login (hostname, username, password) s.sendline ('uptime') # run a command s.prompt() # match the prompt print s.before # print everything before the prompt. s.sendline ('ls -l') s.prompt() print s.before s.sendline ('df') s.prompt() print s.before s.logout()except pxssh.ExceptionPxssh, e: print "pxssh failed on login." print str(e)

Executar um comando num servidor SSH remoto

Vamos mostrar mais um exemplo. Para executar um comando (“uptime”) e imprimir a saída, é necessário fazer algo do género :

import pxsshs = pxssh.pxssh()if not s.login ('localhost', 'myusername', 'mypassword'): print "SSH session failed on login." print str(s)else: print "SSH session login successful" s.sendline ('uptime') s.prompt() # match the prompt print s.before # print everything before the prompt. s.logout() #We can also execute multiple command like this:s.sendline ('uptime;df -h')

Para mais informações sobre pxssh, consulte a documentação oficial

Este post foi modificado pela última vez a 28 de Agosto de 2020 10:53 am

Categorias: Articles

0 comentários

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *