2010-07-06 18 views
9

Tengo que escribir una prueba para la secuencia de comandos de implementación que carga archivos a través de SSH, pero me gustaría que no dependiera de la configuración de los servidores externos. Así es como lo veo:Emular el servidor SSH con fines de prueba

  1. Crea 2 SSH daemons sin autenticación en diferentes puertos de la interfaz loopback.
  2. ejecutar el script de implementación en estos dos puertos

La única pregunta es cómo ejecutar estos demonios SSH ficticias.

Uso Python and Fabric.

Respuesta

6

Si desea tener un control total sobre las acciones del servidor (por ejemplo, con el fin de simular diferentes condiciones del problema y por lo tanto hacen un muy minuciosa pruebas) Recomiendo twisted: como muestra este artículo, hace que sea realmente fácil configurar su propio servidor SSH personalizado.

Si prefiere utilizar un servidor ssh existente, elegir uno de la lista here (o utilizar el que viene con el sistema, si los hubiere; o tal vez sshwindows si estás en Windows) y ejecutarlo con subprocess de Python como parte de la puesta en marcha de sus pruebas.

+0

Gracias por una idea útil, pero acabo de parchear Fabric API para ejecutar todos los comandos en el servidor local. Marcaré su comentario ya que tiene la mejor solución de todos modos. –

1

Reimplementar un daemon SSH no es trivial.

Si su único problema es que no los quiere dependiendo de las configuraciones existentes, puede iniciar el nuevo sshd con -f para especificar una configuración específica y -p para ejecutar en un puerto determinado.

Puede utilizar os.system para realizar llamadas a la cáscara:

os.system('sshd -f myconfig -p 22022') 
+0

Esta es una gran idea y casi lo tengo funcionando, pero me quedé atrapado con ssh-agent, que no se puede ejecutar dos veces con el archivo autorizado_clices específico. ¡De todas formas, gracias por tu respuesta! –

Cuestiones relacionadas