error messagejava.io.EOFException: вход закрыт в ожидаемом компоновщике

Я пытаюсь подключить интерактивное соединение с SSH с помощью кода Java. Я использовал JSCH и ожидаю, строитель. но это как меня "ошибка messagejava.io.EOFException: вход закрыт" в Exidbuilder. Но то же самое, что я подключаю через шпатлевку, она отлично работает. кто-нибудь может мне помочь, где я иду не так? Вот мой код

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;
    }
}

1 ответ

Попробуйте изменить тип канала JSch с "exec" на "shell".

Пожалуйста, следуйте этому примеру.

Другие вопросы по тегам