Java使用ethz通过ssh2执行远程机器Linux上命令,
封装定义Linux机器的环境信息
package com.tom; import java.io.File; public class Env { private String hostaddr; //Linux机器的IP地址 private Integer port; //SSH访问端口,默认22 private String username; //通过用户名密码访问Linux机器时的用户名 private File pemFile; //通过SSH Key认证时,pemFile包含的是SSH Public Key内容 private String passwd;//通过用户名密码访问Linux机器时的密码 private Authentication authentication; public Env(String hostaddr, Integer port, String username, File pemFile, String passwd, Authentication authentication) { this.hostaddr = hostaddr; this.port = port; this.username = username; this.pemFile = pemFile; this.passwd = passwd; this.authentication = authentication; } public String getHostaddr() { return hostaddr; } public Integer getPort() { return port; } public String getUsername() { return username; } public File getPemFile() { return pemFile; } public String getPasswd() { return passwd; } public Authentication getAuthentication() { return authentication; } }
登录Linxu的认证方式
public enum Authentication { USER_PASSWORD("user-password"), SSH_KEY("ssh-key");//用户名密码方式,ssh-key方式 private String name; Authentication(String name) { this.name = name; } @Override public String toString() { return this.name; } }
package com.tom; import ch.ethz.ssh2.Connection; import ch.ethz.ssh2.Session; import java.io.*; public class CommandExecutor { private static final String LINE_SEPARATOR = System.getProperty("line.separator"); //Env封装了远程机器的访问信息 //cmd是要执行的shell命令 public static String exec(Env v, String cmd) throws IOException { Connection conn; if (v.getPort() != null) { conn = new Connection(v.getHostaddr(), v.getPort()); } else { conn = new Connection(v.getHostaddr()); } //使用Key认证 //PemFile是ssh public key文件 boolean b = conn.authenticateWithPublicKey(v.getUsername(), v.getPemFile(), v.getPasswd()); if (!b) { throw new IllegalArgumentException(); } Session session = null;//Java进程与Linux建立会话 BufferedReader br = null; try { session = conn.openSession(); session.execCommand(cmd); //执行命令 InputStream stdIn = session.getStdout();//获得命令执行的标准输出 InputStream errIn = session.getStderr(); //获得命令执行的标准错误输出 StringBuilder sb = new StringBuilder("Standard output:").append(LINE_SEPARATOR); br = new BufferedReader(new InputStreamReader(stdIn, "UTF-8")); String str = null; while ((str = br.readLine()) != null) { sb.append(str).append(LINE_SEPARATOR); } br.close(); br = new BufferedReader(new InputStreamReader(errIn, "UTF-8")); sb.append("Error output:").append(LINE_SEPARATOR); while ((str = br.readLine()) != null) { sb.append(str).append(LINE_SEPARATOR); } return sb.toString(); } finally { closeReaders(br); if (session != null) { session.close(); } } } private static void closeReaders(Reader... readers) { if (readers == null) { return; } for (Reader reader : readers) { try { reader.close(); } catch (IOException e) { //Ignore } } } }
相关推荐
java通过代码登录远程linux服务器并执行linux命令源码以及jar包
本方法是用java语言写的一个方法,可以远程连接linux系统,并在自己想要的正确的运行目录下去执行自己想要执行的正确的命令;java语言可以直接将此方法放入服务层调用。
java开发的swing客户端,远程执行linux命令
java代码执行linux系统命令
常见的办法是通过本地工具(例如 Putty)连接远程计算机,输入命令执行,但是当遇到需要集成这些任务到代码或者开发、测试框架中时,往往就没有很好的解决方案了。sshxcute 就是这样一个框架工具集,它基于 JSCH ...
NULL 博文链接:https://xdjava.iteye.com/blog/1731727
http://www.ganymed.ethz.ch/ssh2/在这个网址下载一个调用ssh和scp命令的jar包。 然后,就可以写程序了。将上面的jar包导入MyEclipse,附一个类的实例代码。
NULL 博文链接:https://hb-yym-929.iteye.com/blog/1062642
JAVA通过SMB的方式下载、上传远程Linux服务器的文件
主要介绍了Java中通过jsch来连接远程服务器执行linux命令的相关资料,需要的朋友可以参考下
在对网内主机进行监控时需要通过java获取远程机器的mac地址
Java应用程序远程登录linux并执行其命令.pdf
自己做的小程序,仅供参考, 说明:链接amq,被动接受amq消息,登录linux,执行指令
主要介绍了Java远程连接Linux服务器并执行命令及上传文件功能,本文是小编整理的代码笔记,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
linux java web SSH 工具 远程
用于远程操作Linux命令的ssh2包.可以实现远程登录Linux。
2.用SSH协议远程连接Linux的辅佐工具类。 3.UDP数据包的发送和接收数据类。 4.完整的API文档和Demo示例程序。 使用时请将zy-tools.jar和lib文件夹里的三个jar包导入项目。使用方法可以查看里面的API文档。还是不理解...
本地cmd命令, 输入命令, 并在控制台输出命令执行结果 jsch 远程ssh到linux服务器, 执行结果并显示输出
Linux服务器批处理远程命令执行工具。纯java实现的ssh协议(jsch),支持同时连接多台linux主机,执行相同的命令。只需配置目标主机的ip地址、用户名和密码即可实现远程操作。服务器无需配置ssh对等协议或安装任何...