可以使用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客户端相关推荐

  1. java ssh客户端_简单的Java SSH客户端

    java ssh客户端 可以使用jcabi-ssh在Java中通过几行代码通过SSH执行shell命令: String hello = new Shell.Plain(new SSH("ss ...

  2. ganymed ssh-2 for java,SSH客户端开发开源组件Ganymed SSH-2 for Java初体验,ganymedssh-2

    SSH客户端开发开源组件Ganymed SSH-2 for Java初体验,ganymedssh-2 1.Ganymed SSH-2 for Java Ganymed SSH-2 for Java是一 ...

  3. hosts多个ip对应一个主机名_一个简单的Web应用程序,用作连接到ssh服务器的ssh客户端...

    WebSSH 一个简单的Web应用程序,用作连接到ssh服务器的ssh客户端.它是用Python编写的,基于tornado,paramiko和xterm.js. 特征 支持SSH密码验证,包括空密码. ...

  4. java rest客户端_Java中的简单REST客户端

    java rest客户端 如今,大多数用于与某些服务器通信的移动应用程序都使用REST服务. 这些服务也是JavaScript或jQuery的常用惯例. 现在,我知道在Java中为REST服务创建客户 ...

  5. 简单的Java服务器和客户端的通信

    系列文章: ESP8266的AP模式与STA模式简单测试 简单的Java服务器和客户端的通信 STM32 ESP8266和Java服务器透传模式下的双向通信 jsp向servlet传输数据 Servl ...

  6. java ssh 和mvc_[转]JAVA三大框架SSH和MVC

    Java-SSH(MVC) JAVA三大框架的各自作用 hibernate是底层基于jdbc的orm(对象关系映射)持久化框架,即:表与类的映射,字段与属性的映射,记录与对象的映射 数据库模型 也就是 ...

  7. java ssh 和mvc_JAVA三大框架SSH和MVC

    Java-SSH(MVC) JAVA三大框架的各自作用 hibernate是底层基于jdbc的orm(对象关系映射)持久化框架,即:表与类的映射,字段与属性的映射,记录与对象的映射 数据库模型 也就是 ...

  8. 使用go的ssh包快速打造一个本地命令行ssh客户端

    2019独角兽企业重金招聘Python工程师标准>>> 热身运动? 在开始之前,先来个热身运动.虽然标题党写着快速打造一个ssh客户端,但是和跑步一样,在运动前还是需要先热身一下,不 ...

  9. 【java毕业设计】基于java+SSH+jsp的酒水销售系统设计与实现(毕业论文+程序源码)——酒水销售系统

    基于java+SSH+jsp的酒水销售系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+SSH+jsp的酒水销售系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦. ...

最新文章

  1. 参数等效模型可以用于_等效媒质理论(介电参数反演)
  2. 一张900w的数据表,怎么把原先要花费17s执行的SQL优化到300ms?
  3. 解决报错:Can't read private key和./build-aux/cksum-schema-check: Permission denied
  4. LeetCode-Search In Rotated Sorted Array2题解
  5. LiveVideoStack线上分享第五季(八):播放器的极致体验优化
  6. 如何修改TextView链接点击实现(包含链接生成与点击原理分析)
  7. 【LeetCode】剑指 Offer 39. 数组中出现次数超过一半的数字
  8. 外媒:麦当劳、星巴克、必胜客开始在萨尔瓦多接受比特币支付
  9. 七夕单日票房破5亿!创复工后单日票房新高
  10. python迭代器_使用Python的迭代器遍历可迭代对象
  11. Java套接字Socket编程--TCP参数
  12. string字符串转实体类_【Recursion】(6)实战练习:使用递归处理字符串
  13. python字典数据的特点_Python核心数据类型之字典15
  14. 特征选择之互信息(mutual information)算法思想及其python代码实现
  15. checkIP——烂代码又堆了一个ip活性检测工具
  16. Trace-导出已有的服务器端跟踪
  17. Oracle 锁表查询和解锁方法
  18. VC程序里判断系统是64位还是32位的正确方法
  19. android应用备份,Android备份App及数据
  20. 淘宝商品详情接口(原数据app、h5端)

热门文章

  1. 常见的时间复杂度函数
  2. C++实现字符串的拼接
  3. java jpa saveall方法优化_JPA批量插入(saveAll)
  4. 水晶报表图形位置_看了我用Excel做的年度报表,老板直夸好
  5. Spring 拦截器和过滤器中自动注入为 null 的原因及解决方案
  6. line和spline_探索适用于Apache Spark的Spline Data Tracker和可视化工具(第1部分)
  7. java单词按字典排序_最终Java日志字典:开发人员最常记录的单词是什么?
  8. Java中的复合设计模式
  9. java默认代码地址_Java 8默认方法可能会破坏您的(用户)代码
  10. java 编译 器 ide_在没有IDE的情况下编译和运行Java