我正在尝试使用用Java编写的SSH连接器在Linux机器上运行一些命令。
我正在使用Jsch库通过SSH运行命令。
问题出在最后一点,即Red Hat Linux box: -
一旦我执行su - 命令 有一个小的perl程序开始: - 询问一些信息
类似的东西: -
SHELL# su -
Enter some info
Info
Are you ok to proceed (y/n) y
SHELL#
我成功地从代码中输入了信息部分。但在那之后
你可以继续(y / n)y
我的代码崩溃,看起来y命令没有正确使用。
我想知道我是否应该从代码中发送Y +“输入密钥”以使其正常工作。 我怎样才能做到这一点?
以下是代码的主要逻辑: -
import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelExec;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
Channel channel;
Session session;
JSch jsch = new JSch();
SSHUserInfo sshUserInfo = new SSHUserInfo();
sshUserInfo.setTrust(true);
sshUserInfo.setPassword(loginPassword);
sshUserInfo.setName(loginUserName);
session = jsch.getSession(loginUserName, host, port);
session.setUserInfo(sshUserInfo);
session.connect();
channel = session.openChannel(SSH_TYPE_SHELL);
InputStream in = channel.getInputStream();
OutputStream out = channel.getOutputStream();
channel.connect();
InputStream in = channel.getInputStream();
OutputStream out = channel.getOutputStream();
channel.connect();
out.write(("su -" + "\n").getBytes());
out.write(("info" + "\n").getBytes());
out.write(("y" + "\n").getBytes());
任何帮助表示感谢。