Ich versuche, interaktive Verbindung mit SSH mit Java-Code verbinden. Ich benutzte jsch und erwarte Builder. aber es ist howing mir "Fehlermeldung java.io.EOFException: Eingang geschlossen" in Expectbuilder. Aber das gleiche, was ich durch Putty verbinde, funktioniert es gut. Kann mir jemand helfen, wo ich falsch liege? Hier ist mein CodeFehlermeldung java.io.EOFException: Eingabe in Expect Builder geschlossen
package src.main.java;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.util.concurrent.TimeUnit;
import javax.swing.JOptionPane;
import net.sf.expectit.Expect;
import net.sf.expectit.ExpectBuilder;
import net.sf.expectit.matcher.Matcher;
import net.sf.expectit.matcher.Matchers;
import net.sf.saxon.functions.Contains;
import com.eviware.soapui.support.scripting.SoapUIScriptEngine;
import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelExec;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.UserInfo;
public class SSHConnect {
//String remoteFile="/home/john/test.txt";
public static void main(String[] args) {
String user = "user";
String password = "password";
String host = "hostname";
int port=22;
try
{
JSch jsch = new JSch();
// jsch.
Session session = jsch.getSession(user, host, port);
session.setPassword(password);
session.setConfig("StrictHostKeyChecking", "no");
System.out.println("Establishing Connection...");
session.connect();
Channel channel=session.openChannel("exec");
channel.connect();
System.out.println("chanel connect");
Expect expect = new ExpectBuilder()
.withInputs(channel.getInputStream())
.withOutput(channel.getOutputStream())
.withTimeout(10, TimeUnit.SECONDS)
.withExceptionOnFailure()
.build();
expect.interact();
Expect p= expect.sendLine("ssh serverName");
String check1=expect.expect(contains("Could"));
expect.sendLine("yes");
String check= expect.expect(contains("password"));
expect.sendLine("password");
System.out.println("check"+check1);
}
catch(Exception e){System.err.print("error message"+ e);}
}
private static Matcher contains(String string) {
Matcher matcher=Matchers.contains(string);
return matcher;
}
}