gpt4 book ai didi

java - 将值传递给 Channel System.in

转载 作者:行者123 更新时间:2023-12-02 12:16:49 25 4
gpt4 key购买 nike

我的目标是通过 ssh shell 执行远程命令。所以我使用 jsch 进行连接并尝试

Channel channel=session.openChannel("exec");

但它没有执行一些命令,例如dir

所以我尝试使用 shell,但无法将值传递给 System.in,因为我只需要通过 GUI 发出命令

Channel channel=session.openChannel("shell");
channel.setInputStream(System.in);
channel.setOutputStream(System.out);

在上面的代码中,我需要通过 GUI 而不是 System.in 中的字符串传递值。

所以我尝试了类似的方法

String cmd="help";
InputStream is = new ByteArrayInputStream(cmd.getBytes());
System.setIn(is);
channel.setInputStream(System.in);

但即使这样我也无法获得输出。

最佳答案

原始发帖者提供了这个答案:

I did some work and found the answer. I will share it here.

To give input as string in ssh shell, you can use following code.

Channel channel=session.openChannel("shell");

OutputStream ops = channel.getOutputStream();
PrintStream ps = new PrintStream(ops, true);

channel.connect();
ps.println("ping localhost");
ps.close();

InputStream in=channel.getInputStream();
byte[] bt = new byte[1024];

while(true) {
while(in.available() > 0) {
int i=in.read(bt, 0, 1024);
if(i < 0) {
break;
}
String str=new String(bt, 0, i);
System.out.print(str); //displays the output of the command executed.
}
if(channel.isClosed()) {
break;
}
Thread.sleep(1000);
channel.disconnect();
session.disconnect();
}

关于java - 将值传递给 Channel System.in,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14049586/

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