Java - Comando desde SSH

 
Vista:

Comando desde SSH

Publicado por Luis Norbey (1 intervención) el 14/01/2020 02:33:58
Buenas, alguno de los integrantes del grupo que halla trabajado con conexiones en SSH, me podría hacer el favor de ayudarme a resolver el siguiente error. Trato de lanzar un comando linux para poder guardar en un .TXT la información que trae el comando. Cuando lo lanzo desde el JAVA no llena el .TXT, pero cuando lo lanzo en la consola si llena el .TXT. ¿Alguien sabe por que pasa esto? Adjunto código de como hago la conexión y como lanzo el comando. De ante mano, muchas gracias
java
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Franklin
Val: 456
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Comando desde SSH

Publicado por Franklin (179 intervenciones) el 14/01/2020 21:12:02
encontré esto por la red buscando info sobre tu problema, espero te sea de ayuda.
Link de la fuente: https://programacion.net/articulo/conectar_via_ssh_con_java_1163
El código copiado está como al 60% de la barra de desplazamiento.

O ya lo resolviste?

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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import com.jcraft.jsch.*;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
 
public class SshRemoteExample {
 
    public static void main(String[] args) {
        String host = "localhost";
        String user = "test";
        String password = "test";
        String command = "hostname\ndf -h\nexit\n";
        try {
            JSch jsch = new JSch();
            Session session = jsch.getSession(user,host, 22);
            session.setUserInfo(new sshRemoteExampleUserInfo(user, password));
            session.connect();
            Channel channel = session.openChannel("shell");
            channel.setInputStream(new ByteArrayInputStream(command.getBytes(StandardCharsets.UTF_8)));
            channel.setOutputStream(System.out);
            InputStream in = channel.getInputStream();
            StringBuilder outBuff = new StringBuilder();
            int exitStatus = -1;
 
            channel.connect();
 
            while (true) {
                for (int c; ((c = in.read()) >= 0);) {
                    outBuff.append((char) c);
                }
 
                if (channel.isClosed()) {
                    if (in.available() > 0) continue;
                    exitStatus = channel.getExitStatus();
                    break;
                }
            }
            channel.disconnect();
            session.disconnect();
 
        // print the buffer's contents
        System.out.print (outBuff.toString());
        // print exit status
        System.out.print ("Exit status of the execution: " + exitStatus);
        if ( exitStatus == 0 ) {
            System.out.print (" (OK)\n");
        } else {
            System.out.print (" (NOK)\n");
        }
 
        } catch (IOException | JSchException ioEx) {
            System.err.println(ioEx.toString());
        }
    }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar