分享使用Java管理千台Linux服务器的技巧

日期: 2012-07-23 来源:TechTarget中国

  现在分享一下在办公环境使用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备份方法


 

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

相关推荐