';回声&x27;linux命令无法通过Java代码工作

';回声&x27;linux命令无法通过Java代码工作,java,linux,jsch,Java,Linux,Jsch,我试图执行一个简单的linux命令,通过java代码将一些文本附加到远程服务器中的文件中。但它不起作用。当我在linux框中运行相同的命令时,它工作得很好 try { java.util.Properties config = new java.util.Properties(); config.put("StrictHostKeyChecking", "no"); JSch jsch = new JSch(); Session

我试图执行一个简单的linux命令,通过java代码将一些文本附加到远程服务器中的文件中。但它不起作用。当我在linux框中运行相同的命令时,它工作得很好

try {
        java.util.Properties config = new java.util.Properties();
        config.put("StrictHostKeyChecking", "no");
        JSch jsch = new JSch();

        Session sessionwrite = jsch.getSession(user2, host2, 22);
        sessionwrite.setPassword(password2);
        sessionwrite.setConfig(config);
        sessionwrite.connect();
        System.out.println("Connected");

        Channel channel = sessionwrite.openChannel("exec");
        BufferedReader in = new BufferedReader(new InputStreamReader(
                channel.getInputStream()));

        String command = "echo \"hello\" >> welcome.txt";
        ((ChannelExec) channel).setCommand(command);
        System.out.println("done");
}
你错过了打给我的电话
connect()
是将请求发送到远程服务器以调用命令的方法。您还应该在通道结束时调用以终止它。您的代码可能如下所示:

Channel channel = sessionwrite.openChannel("exec");
BufferedReader in = new BufferedReader(new InputStreamReader(
        channel.getInputStream()));

String command = "echo \"hello\" >> welcome.txt";
((ChannelExec) channel).setCommand(command);
channel.connect();
channel.disconnect();
System.out.println("done");

我要补充的是,在这个特定的示例中,没有理由在exec通道的标准输入上打开输入流,因此您可以不使用该行。

不工作是什么意思?你认为
welcome.txt
最终会在哪里?您是否尝试过使用
shell
频道?
Channel channel = sessionwrite.openChannel("exec");
BufferedReader in = new BufferedReader(new InputStreamReader(
        channel.getInputStream()));

String command = "echo \"hello\" >> welcome.txt";
((ChannelExec) channel).setCommand(command);
channel.connect();
channel.disconnect();
System.out.println("done");