eclipse - 我正在尝试编写一个 prog 来使用 jsch api 从 java 中执行 unix 中的命令
问题描述
我从谷歌拿了一个示例程序并执行,我得到了预期的结果,但程序没有自动终止,我每次都在 eclipse 中手动终止。
我已经关闭了通道、会话、输入流。
在我的程序中,我使用字节数组来获取控制台输入,但我无法关闭它。
任何帮助表示赞赏。
代码在eclipse中运行:
import java.io.InputStream;
import java.util.Properties;
import com.jcraft.jsch.ChannelExec;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
public class SSHConnectionJava {
public static void main(String[] args) {
String host = "10.140.20.23"; ///custom server
String user = "demo";
String password = "password";
String scriptname = "/home/ababu/create.sh";
StringBuilder sb = new StringBuilder();
sb.append(scriptname);
sb.append(" ");
sb.append("T12345");
String command = sb.toString();
try {
Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
JSch jsch = new JSch();
// Create a JSch session to connect to the server
Session session = jsch.getSession(user, host, 22);
session.setPassword(password);
session.setConfig(config);
// Establish the connection
session.connect();
System.out.println("Connected...");
ChannelExec channel = (ChannelExec) session.openChannel("exec");
channel.setCommand(command);
channel.setErrStream(System.err);
channel.setInputStream(System.in);
InputStream in = channel.getInputStream();
channel.connect();
byte[] tmp = new byte[1024];
while (true) {
while (in.available() > 0) {
int i = in.read(tmp, 0, 1024);
if (i < 0) {
break;
}
System.out.print(new String(tmp, 0, i));
}
if (channel.isClosed()) {
System.out.println("Exit Status: "
+ channel.getExitStatus());
break;
}
Thread.sleep(1000);
}
channel.disconnect();
session.disconnect();
System.out.println("DONE!!!");
} catch (Exception e) {
e.printStackTrace();
}
}
}
在 /home/ababu/create.sh 里面:mkdir $1
解决方案
推荐阅读
- c++ - 有没有办法为类中的所有成员可选地使用`std::optional`
- google-chrome - 下载铬失败
- discord.js - 我无法将已在语音通道中的用户移动到另一个语音通道
- ios - LazyVGrid 中的 NavigationLink 循环返回所有条目,SwiftUI
- python-3.x - 为什么导入的值不可调用
- css - 在 Google Chrome 中运行 CSS 动画时边界半径中断
- sql-server - 如何在购物车中选择最小订购产品超过 8 小时的全套产品
- .net - 带有逗号分隔字符串的正则表达式,由.NET中的管道符号分隔
- python - 如何在不使用结构的情况下解决这个问题?(超过时限)
- python - Django CreateView - 如果字段为空,则不要创建对象,而是重定向到不同的视图。我该怎么做呢?