Pregunta

Voy a escribir el primer código para manejar comandos ssh en Python y busqué en stackoverflow y puedo ver que hay varias bibliotecas de Python que se pueden usar para manejar comandos pasados ​​a través de ssh, como paramiko, esperar y quizás algunos otros.

En particular, necesitaré leer el contenido de los archivos del servidor remoto, copiar archivos a través de ssh/scp, obtener resultados del servidor remoto después de iniciar el script en el servidor remoto.

¿Quizás algunos expertos podrían aconsejar qué biblioteca es mejor y especificar ventajas o desventajas?

¿Fue útil?

Solución

Bibliotecas, envoltorios:

  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 2) y proporciona algunas funciones de nivel superior.Si este último se adapta a sus necesidades, le sugiero que pruebe 1)


Actualizar:1) ya no está (2017-09-12)

  1. http://media.commandline.org.uk/code/ssh.txt (uso de ejemplo: 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:Los ejemplos de código anteriores se proporcionan sólo para obtener una impresión;el código no está probado.

Otros consejos

Desde que no estás haciendo nada en especial a nivel de protocolo, que presumiblemente no necesita el protocolo para ser implementado en su totalidad en pitón, y usted puede simplemente ejecutar comandos SSH / SCP utilizando el módulo subprocess.

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

Trate de tomar un vistazo a Twisted Conch . Se ocupa de todo lo que desee. Si eran simplemente buscando la transferencia de archivos de tipo SCP, siempre se puede utilizar el módulo de Python secsh-filexfer .

La única característica que ninguna de las bibliotecas anteriormente discutidos proporcionar una conexión simultánea a la época actual múltiple servers.In donde los administradores de sistemas necesitan para ejecutar comandos en cientos de servidores, las bibliotecas que pueden manejar la ejecución de comandos en paralelo son muy importantes. Las dos bibliotecas, que yo sepa son:

  1. disparador

  2. Parallel-SSH

Trigger es mucho más que un envoltorio de SSH y más de una biblioteca de redes, que utiliza la API de núcleo retorcido para permitir operaciones de E concurrente /.

Parallel-SSH es una biblioteca que es envoltura fina sobre paramiko pero utiliza GEvent bajo el capó para permitir I concurrente / operaciones de E

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top