java ssh客户端

可以使用jcabi-ssh在Java中通过几行代码通过SSH执行shell命令:

String hello = new Shell.Plain(new SSH("ssh.example.com", 22,"yegor", "-----BEGIN RSA PRIVATE KEY-----...")
).exec("echo 'Hello, world!'");

jcabi-ssh是JSch的便捷包装, JSch是SSH2的著名纯Java实现。

这是一个更复杂的场景,其中我通过SSH上传文件,然后读回其grepped的内容:

Shell shell = new SSH("ssh.example.com", 22,"yegor", "-----BEGIN RSA PRIVATE KEY-----..."
);
File file = new File("/tmp/data.txt");
new Shell.Safe(shell).exec("cat > d.txt && grep 'some text' d.txt",new FileInputStream(file),Logger.stream(Level.INFO, this),Logger.stream(Level.WARNING, this)
);

实现接口Shell SSH类只有一种方法exec 。 此方法接受四个参数:

interface Shell {int exec(String cmd, InputStream stdin,OutputStream stdout, OutputStream stderr);
}

我认为这些论点是很明显的。

还有一些方便的装饰器,使使用简单命令更容易操作。

壳牌安全

Shell.Safe装饰Shell一个实例,并且如果exec退出代码不等于零,则引发异常。 当您要确保命令成功执行但又不想在代码的很多地方重复if/throw不重复时,这可能非常有用。

Shell ssh = new Shell.Safe(new SSH("ssh.example.com", 22,"yegor", "-----BEGIN RSA PRIVATE KEY-----...")
);

壳牌

Shell.Verbose装饰Shell一个实例,并将stdoutstderr复制到slf4j日志记录工具(使用jcabi-log )。 当然,您可以组合装饰器,例如:

Shell ssh = new Shell.Verbose(new Shell.Safe(new SSH("ssh.example.com", 22,"yegor", "-----BEGIN RSA PRIVATE KEY-----..."))
);

壳牌

Shell.PlainShell的包装,它引入了一个仅具有一个参数(执行命令)的新exec方法。 它还不返回退出代码,而是返回stdout 。 当您想执行一个简单命令并仅获取其输出时,这应该非常方便(为了安全Shell.Safe ,我将其与Shell.Safe结合使用):

String login = new Shell.Plain(new Shell.Safe(ssh)).exec("whoami");

下载

您在Maven项目中需要一个依赖项jcabi-ssh.jar (在Maven Central中获取最新版本):

<dependency><groupId>com.jcabi</groupId><artifactId>jcabi-ssh</artifactId>
</dependency>
  • 该项目在Github中 。 如果您有任何问题,只需提交一个问题。 我会尽力的。

相关文章

您可能还会发现以下有趣的帖子:

  • 流利的JDBC装饰器
  • 如何重试异常的Java方法调用
  • 缓存Java方法结果
  • 如何读取MANIFEST.MF文件
  • 带有AOP和注释的Java方法记录

翻译自: https://www.javacodegeeks.com/2014/09/simple-java-ssh-client.html

java ssh客户端

java ssh客户端_简单的Java SSH客户端相关推荐

  1. java 静态块初始化_简单了解java中静态初始化块的执行顺序

    这篇文章主要介绍了简单了解java中静态初始化块的执行顺序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在java中,其应该是先于所有的方法执行. ...

  2. java mapreduce程序_简单的java Hadoop MapReduce程序(计算平均成绩)从打包到提交及运行...

    [TOC] 简单的java Hadoop MapReduce程序(计算平均成绩)从打包到提交及运行 程序源码 import java.io.IOException; import java.util. ...

  3. java event事件_简单的Java Event-事件框架

    自己写的一个简单的Java事件框架.目前具备以下功能: 1.通过继承Event类,用户可自定义事件. 2.通过EventService 的fireEvent(Event e) 发出一个事件. 3.通过 ...

  4. java ear包_简单介绍Java 的JAR包、EAR包、WAR包区别

    原标题:简单介绍Java 的JAR包.EAR包.WAR包区别 WAR包 WAR(Web Archive file)网络应用程序文件,是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件.War专 ...

  5. java for 死循环_简单的java死循环 java中的死循环问题

    java中死循环是什么意思 循环一次不再循环是死循环java中死循环是什么意思 循环一次不再循环是死循环 还是不断循环才是死JAVA中死循环的意思是,不停地循环,不会终止,例如: for (int i ...

  6. udp java 检测连接_简单的JAVA UDP连接测试

    UDP不像TCP那样专门提供了一个SERVER端API,所有的都用DatagramSocket,接受packet数据报.所以说UDP是无连接的,因为所有的链接都是在数据报里,让DatagramSock ...

  7. java学生通讯录_简单实现Java通讯录系统

    本文实例为大家分享了Java通讯录系统的具体代码,供大家参考,具体内容如下 import java.util.Scanner; class Person { String name; String n ...

  8. java进行抽奖_简单实现java抽奖系统

    本文为大家分享了java抽奖系统的具体代码,供大家参考,具体内容如下 用户信息类 /* * 用户信息类 * 1.账号 * 2.密码 * 3.卡号 * 4.是否登录 */ public class Us ...

  9. java 创建水果_简单的java水果商店后台

    packagecom.fruit;importjava.util.ArrayList;importjava.util.Scanner;public classFruitshop {public sta ...

最新文章

  1. corn java 可配置_SpringBoot——目前Java开发最流行的框架(四)
  2. C语言函数strstr 分析及实现
  3. 雷军做程序员时写的文章,太牛了!
  4. BZOJ1433 [ZJOI2009]假期的宿舍 - 二分图匹配
  5. ttk python_【转】Python GUI进阶(ttk)—让界面变得更美
  6. 计算机与交通工程论文,交通工程论文.doc
  7. python元组元素删除_Python3基础 通过拆分元素 把元组的数据删除
  8. linux命令怎么查看文件时间排序,linux中ls命令按照文件大小排...-ls命令按大小与时间排序文件...-ls按时间排序输出文件列表的实例分析_169IT.COM...
  9. C#的Access数据库的连接类
  10. pdf文字无法复制怎么办?unlock解密pdf
  11. 快速查看当前APP包名
  12. 面试题汇总-分布式(一)
  13. android device id修改器,修改硬盘ID硬盘序列号工具(Serial Number Changer)
  14. git用户名和密码保存文件_GitHub 本地保存用户名和密码方法
  15. 互联网域名系统国家工程中心(ZDNS)正式运营“.ren”顶级域名
  16. 测试人生 | 转行测试开发,4年4“跳”年薪涨3倍,我的目标是星辰大海(附大厂面经)!
  17. 基于深度学习智能问答笔记
  18. python中的乘方_python乘方运算
  19. 原来工业互联网和工业物联网是两个东西啊
  20. 3.1.1计算机网络(数据链路层 差错控制 循环冗余码 海明码 流量控制)

热门文章

  1. jzoj6287-扭动的树【区间dp】
  2. Codeforces Round #669 (Div. 2)
  3. SpringCloud Gateway配置自定义路由404坑
  4. Dubbo(六)之属性配置
  5. 自然语言处理中的Attention Model:是什么以及为什么[一]
  6. 深入分析事务的隔离级别
  7. Java 中的双重检查(Double-Check)
  8. Oracle入门(十四B)之PL/SQL异常处理
  9. Oracle入门(十二F)之表分区
  10. 分享一套阿里高级Java面试题,要去阿里的先过这些题。