服务器

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

         [ 网界网 转载 ] 暂无评论

      前东家是一家游戏公司,老板很好,当时工作也留下了很多自己原创的管理脚本。现在分享一下在办公环境使用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备份方法

    关注排行榜

    产品品牌

    文章推荐

    互动沙龙

    相关内容 网友评论 返回首页
    专家咨询