java - 杰西 : Command Output unavailable

标签 java inputstream jsch

我正在尝试使用 jsch 连接到远程交换机并运行一些命令并提取输出。

我可以使用 连接到交换机,但是命令输出在输入流中不可用。也许我没有以正确的方式做这件事。这是代码

    session = jsch.getSession("user", "10.0.0.0", 22);
    session.setPassword("somepwd");
    session.setConfig("StrictHostKeyChecking", "no");
    session.connect();
    System.out.println("connected to remote host");
    Channel channel = session.openChannel("shell");

     OutputStream ops = channel.getOutputStream();
     PrintStream ps = new PrintStream(ops);
        channel.connect();
            ps.println("show version"); 
            ps.flush();
            ps.close();
            InputStream in=channel.getInputStream();
            byte[] bt=new byte[1024];


            while(in.available()>0)
            {
                int i=in.read(bt, 0, 1024);
                if(i<0)
                 break;
                    String str=new String(bt, 0, i);
                //displays the output of the command executed.
                    System.out.print(str);
            }

    channel.disconnect();
    session.disconnect();

当我调试 inputStream.isAvailable() 时,它总是返回零,表明该命令没有输出。

TIA!

最佳答案

请尝试下面的代码 - 已测试且有效

    Channel channel = session.openChannel("shell");
    OutputStream ops = channel.getOutputStream();
    PrintStream ps = new PrintStream(ops);
    channel.connect();
    ps.println("pwd");
    ps.println("exit");
    ps.flush();
    ps.close();

    InputStream in = channel.getInputStream();
    BufferedReader reader = new BufferedReader(new InputStreamReader(in));
    System.out.println("Opening...");

    String jarOutput;
    while ((jarOutput = reader.readLine()) != null)
        System.out.println(jarOutput);
    reader.close();
    channel.disconnect();

输出 -

Opening...
user@host:~> pwd
/home/user
user@host:~>
user@host:~> exit
logout

关于java - 杰西 : Command Output unavailable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25761400/

相关文章:

java - 如何使用java流从网络获取PDF文件

java - 具有依赖 Maven 项目的最佳 Eclipse (Luna) 设置

java - 什么是NullPointerException,我该如何解决?

具有并发输入/输出流的 Java 进程

Java:在 read() 中阻塞的 FileInputStream 而其他线程下载文件的剩余部分?

maven - 如何在 server.xml 中为 Maven SSH 使用提供主机 key

java - channel Sftp : create new or temporary file

java - Jsch 退出后进程终止

Java-检查回文

java - 如何组织java swing应用程序架构?