简单的Java SSH客户端

本文介绍如何在Java中通过jcabi-ssh库简单实现SSH客户端,该库是JSch的便捷包装。示例展示了如何执行远程shell命令、上传文件并读取其内容。同时介绍了jcabi-ssh提供的安全性和日志记录功能,以及如何在Maven项目中添加依赖。
摘要由CSDN通过智能技术生成

可以使用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-sshJSch的便捷包装, 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中 。 如果您有任何问题,只需提交一个问题。 我会尽力的。

相关文章

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值