如何使用Java管理千台规模Linux服务器

系统 Linux
前东家是一家游戏公司,老板很好,当时工作也留下了很多自己原创的管理脚本。现在分享一下在办公环境使用Java、Jsch登录VPN管理Linux的脚本(此处实现JAVA调用Linux上备份Mysql的shell作为示例),希望对运维的朋友有帮助,尽快从繁杂的服务器管理工作中脱离出来。

前东家是一家游戏公司,老板很好,当时工作也留下了很多自己原创的管理脚本。现在分享一下在办公环境使用Java、Jsch登录VPN管理Linux的脚本(此处实现JAVA调用Linux上备份Mysql的shell作为示例),希望对运维的朋友有帮助,尽快从繁杂的服务器管理工作中脱离出来。

主要的实现思路:

如果需要先登录VPN才能连接游戏服务器,需要将游戏服务器的ssh端口(一般是22)映射到本地办公电脑的端口上(如5555),然后ssh连接本地办公电脑的5555端口,这样就可以连接到游戏服务器,并可以管理游戏服务器了。

当您学会通过VPN连接Linux服务器后,如果只在内网环境,不使用VPN,就更简单了,此外不再详述。Jsch的example里也有介绍。

代码:使用Jsch透过VPN

1.package com.daily.wednesday;

2.import java.io.IOException;

3.import java.io.InputStream;

4.import java.sql.Connection;

5.import java.sql.DriverManager;

6.import java.sql.ResultSet;

7.import java.sql.SQLException;

8.import java.sql.Statement;

9.import com.daily.util.DataBaseConnection;

10.import com.jcraft.jsch.Channel;

11.import com.jcraft.jsch.ChannelExec;

12.import com.jcraft.jsch.JSch;

13.import com.jcraft.jsch.JSchException;

14.import com.jcraft.jsch.Session;

15.public class BackUpMysql3 {

16. public static void main(String args[]) {

17. // 读取数据库配置

18. DataBaseConnection dataBaseConnection = new DataBaseConnection();

19. String dataBaseConfigForWrite[] = new String[3];

20. dataBaseConfigForWrite = dataBaseConnection.loadDataConfig();

21.22. Connection conn = null;// 数据库连接

23. Statement stmt = null;// 数据库表达式

24. ResultSet rs = null; // 结果集

25. int rowcount = 0;// 总记录数

26. String sql = "select * from servers_maint_wednesday";

27.28. try {

29. conn = DriverManager.getConnection(dataBaseConfigForWrite[0],

30. dataBaseConfigForWrite[1], dataBaseConfigForWrite[2]);

31. stmt = conn.createStatement();

32. rs = stmt.executeQuery(sql);

33. rs.last();

34. rowcount = rs.getRow();// 总记录数

35. rs = stmt.executeQuery(sql);

36. } catch (SQLException e) {

37. e.printStackTrace();

38. }

39. // 定义游戏服务器IP的数组,游戏服务器IP存在数据库中。

40. String privateIpaddress[] = new String[rowcount];

41. String remark[] = new String[rowcount];// 定义游戏区名称

42. String programPath[] = new String[rowcount];// 定义程序路径

43. String backMysqlShellPath[] = new String[rowcount];// 定义mysql备份脚本路径

44.45. int j = 0;

46. try {

47. while (rs.next()) {

48. privateIpaddress[j] = rs.getString("privateipaddress");

1

50. programPath[j] = rs.getString("programpath");

51. backMysqlShellPath[j] = rs.getString("backmysqlshellpath");

52. j++;

53. }

54. } catch (Exception e) {

55. e.printStackTrace();

56. } finally {

57. try {

58. if (rs != null) {

59. rs.close();

60. }

61. if (stmt != null) {

62. stmt.close();

63. }

64. if (conn != null) {

65. conn.close();

66. }

67. } catch (Exception e) {

68. e.printStackTrace();

69. }

70. }

71.72. // 调用mysql备份方法

【编辑推荐】

  1. Java 应用框架 Nutz 1.b.45 发布
  2. Web开发框架之权限管理系统
  3. 兄弟!今天是系统管理员的节日 
责任编辑:张浩 来源: 网界网
相关推荐

2018-12-06 09:07:59

Ansible服务器运维

2013-12-20 09:48:12

2014-09-18 10:15:54

2017-09-15 14:10:01

系统运维服务器

2011-06-16 10:52:10

SUSE管理器Linux

2013-12-03 11:01:41

Linux服务器管理Webmin

2018-09-06 09:22:22

Linux系统服务器

2010-12-28 17:13:32

管理服务器

2012-05-22 15:19:55

Rex服务器管理

2012-08-09 16:37:45

服务器管理Rex

2015-08-05 09:35:38

Bastille服务器安全

2009-02-10 15:46:00

VNCLinux服务器远程桌面

2016-06-20 15:36:01

OpenManage大

2024-04-29 11:37:33

2010-07-20 09:13:55

Telnet服务器

2020-10-16 18:16:21

远程服务器终端开发人员

2017-03-21 11:12:22

LinuxAmazon AWS服务器

2022-12-29 13:32:24

2015-05-19 11:27:01

2020-06-07 11:54:34

Linux服务器命令
点赞
收藏

51CTO技术栈公众号