post icon

Ejecutar comandos Shell (SSH) con nuestra aplicación en Java

Anteriormente vimos como descargar ficheros por SFTP, ahora veremos algo semejante. Como podemos iniciar sesión y ejecutar comando Shell en otra PC gracias al protocolo SSH (Secure SHell). Así como muchos ya lo habíamos hecho con el clásico PuTTY para Windows. Para esto del lado servidor debe estar habilitada esta opción o no funcionará, podemos ver en otro tópico más adelante como instalarlo.

Así como ya lo venia diciendo en el ejemplo anterior, nuevamente vamos a necesitar de la librería JSch. Bueno mejor vamos con el destroce:

Imports requeridos:

1
2
3
4
5
import java.util.Properties;
 
import com.jcraft.jsch.ChannelExec;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;

El método necesario para la conexión es como sigue:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
        // @author GeekZero@DevTroce.com
 
	public static void EjecutarSSH(String pUser, String pPass, String pHost,
			int pPort, String pComando) throws Exception {
		JSch ssh = new JSch();
		// Instancio el objeto session para la transferencia
		Session session = null;
		// instancio el canal sftp
		ChannelExec channelssh = null;
		try {
			// Inciciamos el JSch con el usuario, host y puerto
			session = ssh.getSession(pUser, pHost, pPort);
			// Seteamos el password
			session.setPassword(pPass);
			// El SFTP requiere un intercambio de claves
			// con esta propiedad le decimos que acepte la clave
			// sin pedir confirmación
			Properties prop = new Properties();
			prop.put("StrictHostKeyChecking", "no");
			session.setConfig(prop);
			session.connect();
 
			// Abrimos el canal de sftp y conectamos
			channelssh = (ChannelExec) session.openChannel("exec");
			// seteamos el comando a ejecutar
			channelssh.setCommand(pComando);
			// conectar y ejecutar
			channelssh.connect();
		} catch (Exception e) {
			throw new Exception(e);
		} finally {
			// Cerramos el canal y session
			if (channelssh.isConnected())
				channelssh.disconnect();
			if (session.isConnected())
				session.disconnect();
		}// end try
	}// EjecutarSSH
10 Diciembre 2009

Comentarios desde Facebook:

Trackbacks/Pingbacks

  1. Ejecutar Comandos SSH y transferir ficheros por SCP desde C# | DevTroce.com WordPress - 28 Junio 2010

    […] = 'compact';ShareYa vimos en una entrega anterior como ejecutar comandos Shell (SSH) con Java, en ésta oportunidad le tocará a C#, básicamente la […]

Responder