从命令行运行时,JSch标准输出不显示

时间:2014-12-01 12:33:40

标签: java eclipse stdout jsch jdb

当我运行以下代码时,它是来自其中一个jsch示例的修改块。 ssh命令可以工作但是我可以在eclipse或jdb中看到后续的stdout / stderr,当我在eclipse外运行时,我看不到输出。我假设stdout和/或stderr已被重定向但我不知道如何取消重定向。

由于 约翰罗斯

public void runSSHCommand(final String command, final String user, final String pwd,
    final String host)
{
    try
    {

        final JSch jsch = new JSch();
        final Session session = jsch.getSession(user, host, 22);
        java.util.Properties config = new java.util.Properties(); 
        config.put("StrictHostKeyChecking", "no");
        session.setConfig(config);
        session.setPassword(pwd);
        session.connect();

        final Channel channel = session.openChannel("exec");
        ((ChannelExec) channel).setCommand(command);
        channel.setInputStream(null);
        ((ChannelExec) channel).setErrStream(System.err);
        final InputStream in = channel.getInputStream();
        channel.connect();
        final byte[] tmp = new byte[1024];
        while (true)
        {
            while (in.available() > 0)
            {
                final int i = in.read(tmp, 0, 1024);
                if (i < 0)
                {
                    break;
                }
                //System.out.print(new String(tmp, 0, i));
            }
            if (channel.isClosed())
            {
                if (in.available() > 0)
                {
                    continue;
                }
                System.out.println("exit-status: " + channel.getExitStatus());
                break;
            }
            try
            {
                Thread.sleep(1000);
            } catch (final Exception ee)
            {
            }
        }
        channel.disconnect();
        session.disconnect();
    } catch (final Exception e)
    {
        System.out.println(e);
    }

    return;
}

0 个答案:

没有答案