gpt4 book ai didi

java - JSCH 的奇怪行为

转载 作者:行者123 更新时间:2023-12-01 16:37:32 35 4
gpt4 key购买 nike

我正在尝试使用 JSCH 库通过 SSH 执行多个命令。我面临一个奇怪的问题。当我尝试在 Eclipse 中运行该程序时,代码完成了执行,但命令(mkdir test)未在服务器中执行但是当我一步步调试时,命令被执行并创建文件夹。任何人都可以解释我在这里做错了什么吗?代码如下:

public static void runCommand() throws JSchException, IOException{
JSch jsch=new JSch();

Session session=jsch.getSession("user","linuxip",22);
List<String>commandList=new ArrayList<String>();
commandList.add("cd deploy");
commandList.add("mkdir test");

session.setPassword(password);
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.connect();
session.setTimeout(500);
System.out.println("Connecting..");
Channel channel = session.openChannel("exec");
OutputStream out = channel.getOutputStream();

((ChannelExec) channel).setCommand("sudo su - wsp ");

System.out.println("connected..");
// channel.setInputStream(null);

((ChannelExec) channel).setErrStream(System.err);
// InputStream in = channel.getInputStream();
((ChannelExec) channel).setPty(true);
channel.connect();
channel.setOutputStream(System.out);
for(String command:commandList) {

out.write((command+"\n").getBytes());


}

out.write(("exit"+"\n").getBytes());
out.flush();

out.close();

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



}}

最佳答案

终于找到了解决方案。我犯了一个愚蠢的错误,将 session 超时设置为 500,这个值非常小,因为命令需要更多时间来执行。所以将其更改为更高的值。session.setTimeout(50000);

关于java - JSCH 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61928396/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com