为什么sshxcute库在尝试运行Result类时会间歇性地返回错误?

时间:2015-01-20 01:48:25

标签: java ssh

我开发了一个Java应用程序,可以在Linux环境中连接到一个IP地址,运行多个脚本并返回结果。我使用sshxcute库来完成这项任务,它工作得很好但是当sshxcute命令试图返回结果时间歇性地卡住,唯一的解决方法是强制sshxcute手动关闭ssh并丢失结果。 我的代码出了什么问题? 我猜sshexcute运行Result类有问题。

这是使用的方法之一:

private void sshcopyimage(SSHExec ssh) {
    try {

        // Create a ExecCommand, the reference class must be
        // CustomTask

        CustomTask ct3 = new ExecCommand("cd /screenShots",
                "ls -tr | tail -1");

        Result res3 = ssh.exec(ct3);
        //The application stuck in this line intermittently.  
        filename = res3.sysout;

        // Check result and print out messages.
        if (res3.isSuccess) {
            System.out.println("Return code: " + res3.rc);
            System.out.println("sysout: " + res3.sysout);
            output.setText("file name gotten.");
        } else {
            System.out.println("Return code: " + res3.rc);
            System.out.println("error message: " + res3.error_msg);
            output.setText("Error in getting the file name .");
        }
    } catch (TaskExecFailException e5) {
        MyMessage.infoBox(e5.getMessage(), "Error");
        output.setText("Error.");
        System.out.println(e5.getMessage());
        e5.printStackTrace();
    } catch (Exception e6) {
        MyMessage.infoBox(e6.getMessage(), "Error");
        output.setText("Error.");
        System.out.println(e6.getMessage());
        e6.printStackTrace();
    } finally {

        //MyMessage.infoBox("Picture created.", "Message");
        output.setText("Picture created.");
        bashcommand();
    }
}

此应用程序中使用的更类似的方法,所有这些方法间歇性地停留在同一行1/30。

1 个答案:

答案 0 :(得分:0)

最后我找到了答案。 我用JSCH取代了excute库并且工作得很好。 我自己找到答案对我有好处:)