2011-10-31 32 views

Respuesta

4

Esencialmente, debe abrir una conexión ssh al otro servidor desde dentro de su aplicación Java. El sitio OpenSSH contiene información útil sobre bibliotecas que le brindarán soporte de ssh en Java.

Parece que Ganymed SSH-2 for Java es el más bonito de la selección, pero no he usado ninguno de ellos, así que tendrá que mirar lo que necesita.

Una vez que tenga una conexión ssh, podrá ejecutar comandos como si hubiera iniciado sesión utilizando cualquier otro cliente ssh.

+0

su enlace de OpenSSH no funciona –

0

Puede ser más fácil consultar Sockets, ya que puede hacer lo que intenta hacer sin tener que configurar ninguna biblioteca externa.

En el equipo host, desea configurar un objeto ServerSocket, y desde el equipo cliente abre un Socket. No tengo tiempo para escribir todo un ejemplo, pero mira esto para una forma simple de configurar una conexión servidor-host a través de Internet en Java.

http://zerioh.tripod.com/ressources/sockets.html

Una vez que usted consigue que creó, que desea introducir el comando shell del ServerSocket en el equipo que debe ejecutar el comando, y hacer algo alrededor de las líneas de

String command = "get this from the ObjectInputStream attached to your ServerSocket"; 
Runtime run = Runtime.getRuntime(); 
Process pr = run.exec(command) ; 
pr.waitFor() ; 
BufferedReader buffer = new BufferedReader(new InputStreamReader(pr.getInputStream())) ; 
String line; 
while ((line = buffer.readLine()) != null) 
{ 
System.out.println(line); 
} 

El La parte difícil es establecer una conexión de host-cliente realiable con los Sockets, pero si estás haciendo algo simple, deberías estar bien con el ejemplo del enlace de arriba.

+0

¿Realmente desea reinventar la rueda y rehacer todo para asegurar la conexión cuando puede usar ssh? – lc2817

+0

Leí mal la pregunta como una solicitud de implementación de Java. Gracias por mencionarlo. –

2

Puede hacerlo de varias maneras; sin embargo, casi todas las formas implican una conexión de red.

Puede escribir un par de programas cliente-servidor de Java, con la conexión del cliente a un servidor y enviando el comando.

Puede escribir su Java para usar un servidor existente, como sshd, telnetd, rsh, ftpd, o un otro servidor preexistente que permita comandos en el extremo remoto.

Se podría aprovechar una arquitectura que maneja ciertos aspectos del establecimiento de un par cliente-servidor, como RMI, SOAP, CORBA, etc.

Al final Java soporta un montón de opciones de red, por lo que tiene más formas de haciendo esto de lo que piensas Solo asegúrate de no hacerlo en un navegador web, ya que esas JVM se lanzaron en un espacio aislado, y no puedes salir del arenero sin ayuda.

8

Jsch (here) le permite conectarse a un servidor remoto utilizando SSH y ejecuta comandos de shell fácilmente (y muchas otras cosas como SCP, SFTP ...). No hay mucha documentación, pero tiene algunos ejemplos de implementación realmente útiles, here (e incluso un ejemplo de lo que quiere hacer here).

También puede combinar Jsch con Expect4j y así tener un mejor control de los comandos que desea ejecutar (buen ejemplo here).

+0

+1 para una respuesta perfecta .... Muchas gracias –

Cuestiones relacionadas