几乎与this主题相似,但在这里我不是超级用户使用--stdin。
所以我找到了另一种方法,我会在后台打开一个“shell”并通过String
通过InputStream
我制作了如下代码:
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));
}
});
现在,当我只想执行一个命令但是我想给出多个命令时,这种方法非常有效,我面临着这个问题。
有什么建议吗?
此致
依禅
答案 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