java ssh客户端_简单的Java SSH客户端
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
一个实例,并将stdout
和stderr
复制到slf4j日志记录工具(使用jcabi-log )。 当然,您可以组合装饰器,例如:
Shell ssh = new Shell.Verbose(new Shell.Safe(new SSH("ssh.example.com", 22,"yegor", "-----BEGIN RSA PRIVATE KEY-----..."))
);
壳牌
Shell.Plain
是Shell
的包装,它引入了一个仅具有一个参数(执行命令)的新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客户端相关推荐
- java 静态块初始化_简单了解java中静态初始化块的执行顺序
这篇文章主要介绍了简单了解java中静态初始化块的执行顺序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在java中,其应该是先于所有的方法执行. ...
- java mapreduce程序_简单的java Hadoop MapReduce程序(计算平均成绩)从打包到提交及运行...
[TOC] 简单的java Hadoop MapReduce程序(计算平均成绩)从打包到提交及运行 程序源码 import java.io.IOException; import java.util. ...
- java event事件_简单的Java Event-事件框架
自己写的一个简单的Java事件框架.目前具备以下功能: 1.通过继承Event类,用户可自定义事件. 2.通过EventService 的fireEvent(Event e) 发出一个事件. 3.通过 ...
- java ear包_简单介绍Java 的JAR包、EAR包、WAR包区别
原标题:简单介绍Java 的JAR包.EAR包.WAR包区别 WAR包 WAR(Web Archive file)网络应用程序文件,是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件.War专 ...
- java for 死循环_简单的java死循环 java中的死循环问题
java中死循环是什么意思 循环一次不再循环是死循环java中死循环是什么意思 循环一次不再循环是死循环 还是不断循环才是死JAVA中死循环的意思是,不停地循环,不会终止,例如: for (int i ...
- udp java 检测连接_简单的JAVA UDP连接测试
UDP不像TCP那样专门提供了一个SERVER端API,所有的都用DatagramSocket,接受packet数据报.所以说UDP是无连接的,因为所有的链接都是在数据报里,让DatagramSock ...
- java学生通讯录_简单实现Java通讯录系统
本文实例为大家分享了Java通讯录系统的具体代码,供大家参考,具体内容如下 import java.util.Scanner; class Person { String name; String n ...
- java进行抽奖_简单实现java抽奖系统
本文为大家分享了java抽奖系统的具体代码,供大家参考,具体内容如下 用户信息类 /* * 用户信息类 * 1.账号 * 2.密码 * 3.卡号 * 4.是否登录 */ public class Us ...
- java 创建水果_简单的java水果商店后台
packagecom.fruit;importjava.util.ArrayList;importjava.util.Scanner;public classFruitshop {public sta ...
最新文章
- corn java 可配置_SpringBoot——目前Java开发最流行的框架(四)
- C语言函数strstr 分析及实现
- 雷军做程序员时写的文章,太牛了!
- BZOJ1433 [ZJOI2009]假期的宿舍 - 二分图匹配
- ttk python_【转】Python GUI进阶(ttk)—让界面变得更美
- 计算机与交通工程论文,交通工程论文.doc
- python元组元素删除_Python3基础 通过拆分元素 把元组的数据删除
- linux命令怎么查看文件时间排序,linux中ls命令按照文件大小排...-ls命令按大小与时间排序文件...-ls按时间排序输出文件列表的实例分析_169IT.COM...
- C#的Access数据库的连接类
- pdf文字无法复制怎么办?unlock解密pdf
- 快速查看当前APP包名
- 面试题汇总-分布式(一)
- android device id修改器,修改硬盘ID硬盘序列号工具(Serial Number Changer)
- git用户名和密码保存文件_GitHub 本地保存用户名和密码方法
- 互联网域名系统国家工程中心(ZDNS)正式运营“.ren”顶级域名
- 测试人生 | 转行测试开发,4年4“跳”年薪涨3倍,我的目标是星辰大海(附大厂面经)!
- 基于深度学习智能问答笔记
- python中的乘方_python乘方运算
- 原来工业互联网和工业物联网是两个东西啊
- 3.1.1计算机网络(数据链路层 差错控制 循环冗余码 海明码 流量控制)