从字符串中获取命令(密码)并将其设置为InputStream到Java(JSCH)中的Unix服务器

时间:2013-08-23 15:56:51

标签: java linux shell unix jsch

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

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

向shell提供输入

我制作了如下代码:

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));
    }
});

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

有什么建议吗?

此致

依禅

1 个答案:

答案 0 :(得分: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