0

几乎与主题相似,但在这里我不是使用--stdin 的超级用户。

所以我找到了另一种方式,我会在后台打开一个“shell”并通过StringthroughInputStream

我做了如下代码:

String s = "cd bin\n";

byte bb[] = s.getBytes();

InputStream intt = new ByteArrayInputStream(bb);

channel.setInputStream(new FilterInputStream(intt) {
    public int read(byte[] b, int off, int len) throws IOException {
        return in.read(b, off, (len > 1024 ? 1024 : len));
    }
});

现在,当我只想执行一个命令但我想给出多个命令时,这非常有效,我正面临着问题。

有什么建议么?

问候,

伊山

4

1 回答 1

0

我找到了我提出的问题的解决方案,不知道它是否是一个完整的证明解决方案,因为我在有限的时间内进行了测试,并且我尽我所能做到了。

channel = session.openChannel("exec");
((ChannelExec) channel).setCommand(command);
((ChannelExec) channel).setPty(true);

在命令字符串中

String command = "(echo old_password; echo new_password; echo new_password) | passwd username";

或者如果不是超级用户,

String command = "(echo old_password; echo new_password; echo new_password) | passwd"

这就对了 ;)

问候,

icr

于 2013-08-27T03:55:20.267 回答