2011-06-18 15 views
7

Con 'esperar', uno puede ejecutar comandos SSH y analizar la salida de esos comandos para alterar el flujo del programa. Me gustaría hacer esto con Java. Es decir, quiero que mi aplicación Java inicie una sesión SSH, ejecute un comando en el servidor remoto y dependa de la salida de ese comando ejecute el próximo comando, sin necesidad de iniciar una nueva sesión SSH.SSH en la aplicación Java con funcionalidad 'esperar'

¿Es esto posible en Java?

Gracias

Respuesta

3

Trate ExpectJ.      

+0

Es un proyecto interesante, sin embargo, no es lo que estoy buscando aquí, ya que me gustaría mantener a Java SSH puro: mejor manejo de excepciones de esa manera. – jtnire

3

Sí, es posible. Hay algunas bibliotecas, pero sugiero Ganymed SSH-2. Puede descargarlo here, y también hay muchos ejemplos de uso de funciones ...

+0

¡Esto se ve bien! Sin embargo, el sitio dice que el código ya no se mantiene. ¿Tienes experiencia con este código? ¿Es estable o aún tiene problemas? Los ejemplos parecen encajar bien con la factura – jtnire

+0

Bueno, según mi experiencia, parece funcionar bien, pero no estoy 100% seguro ... –

6

Promoción personal de mi proyecto: después de mirar otras bibliotecas basadas en Java de Expect, decidí escribir la mía ... esperanza lo encuentras útil Abra problemas en GitHub si encuentra algún problema.

https://github.com/ronniedong/Expect-for-Java

Por SSH, se sugiere emplear JSch, como el ejemplo en el archivo readme.

+0

De hecho, esto es elegante y simple, y solo está acoplado al 'java. Las interfaces io.InputStream' y 'javax.io.OutputStream' (que suelen ser las construcciones disponibles de las bibliotecas SSH como JSch o Ganymed), pero hacen uso inteligente detrás de escena de la construcción de NIO para escenarios de productor/consumidor,' java .nio.channels.Pipe'. Es mejor que Expect4J (¡todas esas dependencias!) Y mejor que Enchanter (no actualizado, errores de sincronización, no regex) o ExpectJ (sin regex). ¡Gracias! –

Cuestiones relacionadas