Pergunta

Eu vou escrever primeiro código para o processamento de comandos ssh em python e eu fiz pesquisa sobre o stackoverflow e pode ver que existem vários python a bibliotecas que podem ser usadas para a manipulação de comandos passados através do ssh, como paramiko, pexpect e talvez alguns outros.

Particularmente, eu preciso ler o conteúdo dos arquivos do servidor remoto, cópia de arquivos através do ssh/scp, na saída do servidor remoto depois de iniciar o script no servidor remoto.

Talvez alguns especialistas, poderia conselhos que biblioteca é melhor e especificar as vantagens ou desvantagens?

Foi útil?

Solução

Bibliotecas, Wrappers:

  1. http://www.lag.net/paramiko/

    #!/usr/bin/env python
    import paramiko
    from contextlib import contextmanager
    host = '192.168.10.142'
    username = 'slacker'
    password = 'password'
    def create_ssh(host=host, username=username, password=password):
        ssh = paramiko.SSHClient()
        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
        try:
           print "creating connection"
           ssh.connect(host, username=username, password=password)
           print "connected"
           yield ssh
        finally:
           print "closing connection"
           ssh.close()
           print "closed"
    

1) utiliza a 2) e fornece algumas funções de nível superior.Se estes se adequam às suas necessidades, eu sugiro tentar out 1)


Atualização:1) é ido agora (2017-09-12)

  1. http://media.commandline.org.uk/code/ssh.txt (exemplo de uso: https://zeth.net/archive/2008/05/29/sftp-python-really-simple-ssh/)

    s = ssh.Connection('example.com', 'warrior', password = 'lennalenna')
    s.put('/home/warrior/hello.txt', '/home/zombie/textfiles/report.txt')
    s.get('/var/log/strange.log', '/home/warrior/serverlog.txt')
    s.execute('ls -l')
    s.close()
    

Nota:Os exemplos de código acima, são fornecidos apenas para a obtenção de uma impressão;o código não é testado.

Outras dicas

Desde que você não está fazendo nada de especial em nível de protocolo, você provavelmente não precisa de o protocolo a ser totalmente implementado em python, e você pode simplesmente executar o ssh/scp comandos usando o subprocess módulo.

import subprocess
subprocess.check_call(['ssh', 'server', 'command'])
subprocess.check_call(['scp', 'server:file', 'file'])

Tente dar uma olhada no Torcida Do Búzio.Ele lida com tudo o que você quer.Se você estava procurando SCP-transferência de arquivo de estilo, você sempre pode usar o módulo python secsh-filexfer.

Um recurso que nenhum dos acima discutido, as bibliotecas fornecem uma conexão simultânea para vários servidores.Na idade de hoje, onde os administradores de sistema precisa executar comandos em centenas de servidores,bibliotecas, que pode processar em paralelo a execução de comandos são muito importantes.As duas bibliotecas que eu conheço são :

  1. Gatilho

  2. Paralela-SSH

Trigger é muito mais do que um SSH wrapper e mais de uma livraria de rede,ele utiliza a Torcida core API para permitir simultâneas operações de e/S.

Paralela-SSH é uma biblioteca wrapper fino através de Paramiko mas usa Gevent sob o capô para habilitar simultâneas operações de e/S

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top