Java 连接linux服务器

野性酷女 2021-12-18 22:53 471阅读 0赞

Java 连接linux服务器

转载请标明出处^_^
原文首发于: www.zhangruibin.com
本文出自于: RebornChang的博客

众所周知,linux服务器是支持ssh命令连接的,连接格式:ssh user@ipAddr port,回车之后输入密码即可连接。
那么,怎样使用Java代码进行连接,并且执行命令呢?

来了解一下什么是Jsch与ganymed-ssh2
Ganymed SSH-2 for Java是用纯Java实现SSH-2协议的一个包。可以利用它直接在Java程序中连接SSH服务器。MVN地址为:https://mvnrepository.com/artifact/ch.ethz.ganymed/ganymed-ssh2
可以看到最后的更新日志为2014年。
ganymed-ssh2和Jsch大同小异,不再多说,重点说下怎样在Java代码中连接linux。

首先确认linux开启了ssh连接方式

centos7下执行命令:
ps -e | grep sshd

若输出为:
1132 ? 00:00:00 sshd
10614 ? 00:00:02 sshd
10616 ? 00:00:00 sshd
10748 ? 00:00:00 sshd
则证明开启了ssh服务,若没有以上输出,则需要开启ssh服务,开启方法:
开启方法

使用shell工具测试连接

使用Xshell,secureCRT,FinallShell等工具进行连接测试。
命令格式:ssh user@ipAddr port。
测试效果如下图:
0aaukogq74ianq42en7t9q5e51.png

主机上编写一个shell脚本用于测试

在主机上编写一个简单的shell脚本用于测试。
脚本名称为: testForJava ;
脚本目录为:/test/shell;
脚本内容:

  1. #!/bin/sh
  2. echo "If you can read this ,it means that you can conctrl server remote!"

编辑完之后再服务器上本地测试效果如下图所示:
q57r17cfeihmdodq9ip8crqmnl.png

Maven项目引入依赖编写Java代码测试

这里说下maven的,非maven项目网上下载jar包引入。
ganymed-ssh2的maven地址上文中已经说过了,在POM文件中加入相关依赖就行了,博文中加入的依赖为:

  1. <!-- https://mvnrepository.com/artifact/ch.ethz.ganymed/ganymed-ssh2 -->
  2. <dependency>
  3. <groupId>ch.ethz.ganymed</groupId>
  4. <artifactId>ganymed-ssh2</artifactId>
  5. <version>build210</version>
  6. </dependency>

Java代码为:

  1. public class TestUseSSH {
  2. private static String ip = "your ip";
  3. private static int port = 22;
  4. private static String user = "user";
  5. private static String pswd = "pswd";
  6. public static void main(String[] args) {
  7. try {
  8. Connection conn = new Connection(ip,port);
  9. conn.connect();
  10. boolean isAuthenticated = conn.authenticateWithPassword(user,
  11. pswd);
  12. if (isAuthenticated == false)
  13. throw new IOException("Authentication failed.");
  14. Session sess = conn.openSession();
  15. sess.execCommand("sh /test/shell/testForJava");
  16. InputStream stdout = new StreamGobbler(sess.getStdout());
  17. BufferedReader br = new BufferedReader(
  18. new InputStreamReader(stdout));
  19. while (true) {
  20. String line = br.readLine();
  21. if (line == null)
  22. break;
  23. System.out.println(line);
  24. }
  25. sess.close();
  26. conn.close();
  27. } catch (IOException e) {
  28. e.printStackTrace(System.err);
  29. System.exit(2);
  30. }
  31. }
  32. }

运行后输出结果为:

  1. If you can read this ,it means that you can conctrl server remote!

v1hslf98n0jpvq64u4p3b6jajs.png

注:这里只说了linux下执行命令,更多功能在这里没有描述,有兴趣的可以自行深入探索,Over!

发表评论

表情:
评论列表 (有 0 条评论,471人围观)

还没有评论,来说两句吧...

相关阅读

    相关 u盘连接linux服务器

    通常情况下,ftp是可以满足我们和虚拟机linux之间的数据交流的,但是,但是,有些公司是有网但不会给你联网的的,这种情况下ftp无法在线安装到服务器端就很头疼,我们可以用u盘