Enviar comandos por SSH con JSch
Publicado por Alberto (1 intervención) el 10/11/2017 15:38:25
Buenas tardes, compañeros/as:
Estoy intentando hacer una conexión a mi router por SSH y enviar el comando de reinicio del mismo. Lo primero ya lo consigo, lo que no consigo es que funcione el comando "restart" con la biblioteca Expect4j. Este es el código que utilizo.
Y esto es lo que obtengo al ejecutarlo:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/oro/text/regex/Perl5Matcher
at expect4j.Expect4j.<init>(Expect4j.java:37)
at expect4j.Expect4j.<init>(Expect4j.java:61)
at Router.main(Router.java:28)
Caused by: java.lang.ClassNotFoundException: org.apache.oro.text.regex.Perl5Matcher
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 3 more
Si tenéis alguna idea de por qué está fallando, por favor, hacédmelo saber.
Muchas gracias.
Estoy intentando hacer una conexión a mi router por SSH y enviar el comando de reinicio del mismo. Lo primero ya lo consigo, lo que no consigo es que funcione el comando "restart" con la biblioteca Expect4j. Este es el código que utilizo.
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
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Hashtable;
import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelShell;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
import expect4j.Expect4j;
public class Router {
public static void main(String[] args) {
try {
JSch jsch = new JSch();
Session session = jsch.getSession("user", "host");
session.setPassword("password");
session.setConfig("StrictHostKeyChecking", "no");
session.connect(60 * 1000);
Channel channel = session.openChannel("shell");
Expect4j expect = new Expect4j(channel.getInputStream(),
channel.getOutputStream());
channel.setInputStream(System.in);
channel.setOutputStream(System.out);
expect.send("restart");
channel.connect();
} catch (JSchException e) {
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Y esto es lo que obtengo al ejecutarlo:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/oro/text/regex/Perl5Matcher
at expect4j.Expect4j.<init>(Expect4j.java:37)
at expect4j.Expect4j.<init>(Expect4j.java:61)
at Router.main(Router.java:28)
Caused by: java.lang.ClassNotFoundException: org.apache.oro.text.regex.Perl5Matcher
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 3 more
Si tenéis alguna idea de por qué está fallando, por favor, hacédmelo saber.
Muchas gracias.
Valora esta pregunta


0