gpt4 book ai didi

java - 在 JSch 中使用 SSH "exec" channel 执行 sudo

转载 作者:行者123 更新时间:2023-11-30 12:05:14 24 4
gpt4 key购买 nike

我正在使用我在其中传递以下命令的文件:

  1. 主机名
  2. 密码
  3. pbrun su - fclaim
  4. whoami
  5. cd ..
  6. 密码

添加下面的Java代码:

for (String command1 : commands) {

Channel channel=session.openChannel("exec");
((ChannelExec)channel).setCommand(command1);

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.println(new String(tmp, 0, i));
}
if(channel.isClosed()){
break;
}
}
channel.setInputStream(null);
channel.disconnect();
}

但是我得到了这个输出:

  1. 一些主机名
  2. /home/imam
  3. 缺少输出
  4. 阿訇
  5. 缺少输出
  6. /home/imam

最佳答案

您的代码在隔离环境中执行每个命令。因此,您的第二个 whoami 不会像您希望的那样在 pbrun su 中运行。

pbrun su 执行一个新的 shell。

要向 shell 提供命令,您可以:

一般来说,我推荐第一种方法,因为它使用定义更好的 API(命令行参数)。

关于java - 在 JSch 中使用 SSH "exec" channel 执行 sudo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56466629/

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