在java中使用jsch库自动化ssh会话

在java中使用jsch库自动化ssh会话,java,automation,Java,Automation,我正在使用java自动化ssh会话,使用此代码我可以登录并在屏幕上获得输出,但在此之后,在进入应用程序以在ssh会话中运行后,它不需要用户名和密码,因为它需要键盘交互,如TAB和enter以及功能键等,那么,有没有一种方法可以发送键盘事件来代替命令,从而实现自动化的成功呢 public class jschputty { public static void main(String args[]) { String host="x.x.x.x"; String user="usern

我正在使用java自动化ssh会话,使用此代码我可以登录并在屏幕上获得输出,但在此之后,在进入应用程序以在ssh会话中运行后,它不需要用户名和密码,因为它需要键盘交互,如TAB和enter以及功能键等,那么,有没有一种方法可以发送键盘事件来代替命令,从而实现自动化的成功呢

public class jschputty {

public static void main(String args[])
{   
 String host="x.x.x.x";
 String user="username";
 String password="password";
 String command1="ls -ltr\t";

 try{

    java.util.Properties config = new java.util.Properties(); 
    config.put("StrictHostKeyChecking", "no");
    JSch jsch = new JSch();
    Session session=jsch.getSession(user, host, 22);
    session.setPassword(password);
    session.setConfig(config);
    session.connect();
    System.out.println("Connected");

    ChannelExec channel=(ChannelExec) session.openChannel("exec");
    BufferedReader in=new BufferedReader(new InputStreamReader(channel.getInputStream()));

  channel.setCommand(command);
    channel.connect();
           String msg=null;
           while((msg=in.readLine())!=null){
            System.out.println(msg);
           }                  
                channel.disconnect();
                session.disconnect();
                System.out.println("DONE");
            }catch(Exception e){
                e.printStackTrace();
            }

        }

}

如果要将输出发送到远程会话,我建议您写入
通道返回的OutputStream。getOutputStream()

您要做的是与SFTP服务器建立SFTP连接。就像您可以使用名为“putty”的客户端应用程序一样。您没有以任何方式使用此代码与putty进行交互。@Gimby-从技术上讲,是ssh,不是sftp,但您是正确的,putty与此无关。谢谢,我试图在代码中使用此选项,您能否帮我提供一个示例,以了解如何使用此选项将其写入输出流,参考我的代码?InputStream in=channel.getInputStream();OutputStream out=channel.getOutputStream();channel.connect();out.write(“ls-lrt\n”.getBytes());out.flush();这是我尝试过的,但我在这方面似乎是错的sumthing@XtremeCore-为什么?你没有提供你的实际问题是什么的细节。你应该用具体的细节更新你的问题。