Process p = Runtime.getRuntime().exec("ssh myhost");
PrintStream out = new PrintStream(p.getOutputStream());
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
out.println("ls -l /home/me");
while (in.ready()) {
String s = in.readLine();
System.out.println(s);
}
out.println("exit");
p.waitFor();
Have a look at Runtime.exec() Javadoc
Process p = Runtime.getRuntime().exec("ssh myhost");
PrintStream out = new PrintStream(p.getOutputStream());
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
out.println("ls -l /home/me");
while (in.ready()) {
String s = in.readLine();
System.out.println(s);
}
out.println("exit");
p.waitFor();
public void SSHClient(String serverIp,String command, String usernameString,String password) throws IOException{
System.out.println("inside the ssh function");
try
{
Connection conn = new Connection(serverIp);
conn.connect();
boolean isAuthenticated = conn.authenticateWithPassword(usernameString, password);
if (isAuthenticated == false)
throw new IOException("Authentication failed.");
ch.ethz.ssh2.Session sess = conn.openSession();
sess.execCommand(command);
InputStream stdout = new StreamGobbler(sess.getStdout());
BufferedReader br = new BufferedReader(new InputStreamReader(stdout));
System.out.println("the output of the command is");
while (true)
{
String line = br.readLine();
if (line == null)
break;
System.out.println(line);
}
System.out.println("ExitCode: " + sess.getExitStatus());
sess.close();
conn.close();
}
catch (IOException e)
{
e.printStackTrace(System.err);
}
}
Below is the easiest way to SSh in java. Download any of the file in the below link and extract, then add the jar file from the extracted file and add to your build path of the project http://www.ganymed.ethz.ch/ssh2/ and use the below method
public void SSHClient(String serverIp,String command, String usernameString,String password) throws IOException{
System.out.println("inside the ssh function");
try
{
Connection conn = new Connection(serverIp);
conn.connect();
boolean isAuthenticated = conn.authenticateWithPassword(usernameString, password);
if (isAuthenticated == false)
throw new IOException("Authentication failed.");
ch.ethz.ssh2.Session sess = conn.openSession();
sess.execCommand(command);
InputStream stdout = new StreamGobbler(sess.getStdout());
BufferedReader br = new BufferedReader(new InputStreamReader(stdout));
System.out.println("the output of the command is");
while (true)
{
String line = br.readLine();
if (line == null)
break;
System.out.println(line);
}
System.out.println("ExitCode: " + sess.getExitStatus());
sess.close();
conn.close();
}
catch (IOException e)
{
e.printStackTrace(System.err);
}
}
You may take a look at this Java based framework for remote command execution, incl. via SSH: https://github.com/jkovacic/remote-exec It relies on two opensource SSH libraries, either JSch (for this implementation even an ECDSA authentication is supported) or Ganymed (one of these two libraries will be enough). At the first glance it might look a bit complex, you'll have to prepare plenty of SSH related classes (providing server and your user details, specifying encryption details, provide OpenSSH compatible private keys, etc., but the SSH itself is quite complex too). On the other hand, the modular design allows for simple inclusion of more SSH libraries, easy implementation of other command's output processing or even interactive classes etc.
发布评论
评论(6)
查看 Runtime.exec() Javadoc
Have a look at Runtime.exec() Javadoc
JSch 是 SSH2 的纯 Java 实现,可帮助您在远程计算机上运行命令。
您可以在此处找到它,并且有一些示例这里。 jcraft.com/jsch/examples/" rel="noreferrer">此处。
您可以使用
exec.java
。JSch is a pure Java implementation of SSH2 that helps you run commands on remote machines.
You can find it here, and there are some examples here.
You can use
exec.java
.我基于
JSch
库创建了解决方案:I created solution based on
JSch
library:下面是在 java 中进行 SSH 的最简单方法。下载以下链接中的任何文件并解压,然后从解压的文件中添加 jar 文件并添加到项目的构建路径中
http://www.ganymed.ethz.ch/ssh2/
并使用下面的方法
Below is the easiest way to SSh in java. Download any of the file in the below link and extract, then add the jar file from the extracted file and add to your build path of the project
http://www.ganymed.ethz.ch/ssh2/
and use the below method
您可以看看这个基于 Java 的远程命令执行框架,包括。通过 SSH:https://github.com/jkovacic/remote-exec
它依赖于两个开源 SSH 库,JSch(对于此实现,甚至支持 ECDSA 身份验证)或 Ganymed(这两个库之一就足够了)。乍一看,它可能看起来有点复杂,您必须准备大量与 SSH 相关的类(提供服务器和用户详细信息、指定加密详细信息、提供 OpenSSH 兼容的私钥等,但 SSH 本身相当复杂也)。另一方面,模块化设计允许简单地包含更多 SSH 库,轻松实现其他命令的输出处理甚至交互类等。
You may take a look at this Java based framework for remote command execution, incl. via SSH: https://github.com/jkovacic/remote-exec
It relies on two opensource SSH libraries, either JSch (for this implementation even an ECDSA authentication is supported) or Ganymed (one of these two libraries will be enough). At the first glance it might look a bit complex, you'll have to prepare plenty of SSH related classes (providing server and your user details, specifying encryption details, provide OpenSSH compatible private keys, etc., but the SSH itself is quite complex too). On the other hand, the modular design allows for simple inclusion of more SSH libraries, easy implementation of other command's output processing or even interactive classes etc.
几年前我使用 ganymede 来做这个... http://www.cleondris.ch/opensource /ssh2/
I used ganymede for this a few yeas ago... http://www.cleondris.ch/opensource/ssh2/