我正在使用JSch库编写一个程序,必须打开一个shell
通道,执行String
中存储的几个命令
我需要从字符串变量而不是控制台输入命令
我遇到了一个帖子Jsch:Command Output unavailable
在给定的代码中,它对于pwd
、whoami
等命令来说运行良好,但当我尝试执行sudo-u hiveuser-I
时,它会遇到问题
以下是代码:
public static void main(String[] args) throws Exception
{
JSch jsch = new JSch();
String host = "my.host.server";
String user = "myLoginId";
String pswd = "myPASSword";
Session session=jsch.getSession(user,host, 22);
session.setPassword(pswd);
session.setConfig("StrictHostKeyChecking", "no");
session.setConfig("PreferredAuthentications","publickey,keyboard-interactive,password");
session.connect();
System.out.println("Connected");
Channel channel = session.openChannel("shell");
OutputStream ops = channel.getOutputStream();
PrintStream ps = new PrintStream(ops);
channel.connect();
ps.println("sudo -iu hiveuser");
ps.println(pswd);
ps.println("hive");
ps.println("desc table myHiveTable;");
ps.flush();
ps.close();
InputStream in = channel.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
System.out.println("Opening...");
String jarOutput;
while ((jarOutput = reader.readLine()) != null)
System.out.println(jarOutput);
reader.close();
channel.disconnect();
session.disconnect();
}
您可以尝试输入密码:
echo password | sudo -iu hiveuser --stdin
问题内容: 我正在使用JSCH -SSH库在“ shell”通道中执行命令,但找不到找到两种方法的方法: 1)如何查找命令是否在远程unix box上完全执行? 2)如何在String中捕获命令输出,而不是在System.out控制台上打印它? 下面是我的代码片段,可以在system.out上显示shell命令输出 注意:我不想使用“ exec”通道,因为它为每个命令启动一个新进程,并且不记得已导
基本上,我有一个java程序,它使用JSch SSH库来控制两个不同的SSH连接。 我创建了一个名为SSHConnection的类,它是JSch库的包装器,并通过调用如下所示的构造函数初始化了两个副本: 但是,我发现,如果我已经打开了一个使用SHELL通道的会话,当我试图为第二个会话打开第一个通道时,我会得到一个错误,即“channel is not opened”(JSch异常)。 有没有一种方
问题内容: 我正在尝试使用JSch从Android使用SSH在Linux服务器上执行命令。 据我所知,我正在连接到服务器,但是当我尝试检索命令的结果时,却什么也没得到。 连接到服务器: 检索数据: 我在这里想念什么? 问题答案: 在启动命令之后,在返回任何输出之前,您将立即断开连接。 您必须等待“ exec”通道关闭(命令完成后它将关闭)。 有关“ exec”通道的信息, 请参见官方JSch示例。
null 到目前为止,我在cmd中的输入是: d: CD JavaProgram javac snake.java board.java 从这里我该怎么办? 这是指向这2个java文件源代码的链接。http://zetcode.com/tutorials/javagameStutorial/snake/
问题内容: 我想在其中运行一些命令并处理输出。我曾经用过,但是对于某些命令,例如,它没有给出正确的输出。对于该命令,我的程序没有给出任何输出,但给出了错误提示。但是,同一命令在命令提示符下给出正确的输出。 还有其他方法可以执行包含Java通配符的命令吗? 问题答案: 还有其他方法可以执行包含Java通配符的命令吗? 就在这里。 您的代码中存在三个潜在的问题: 假设您想查看外部命令的输出,则需要照顾