服务器时间同步平台化
来源:互联网 发布:淘宝new balance旗舰店 编辑:程序博客网 时间:2024/06/03 20:49
针对linux服务器,用平台一键同步时间、查看内存占用、磁盘占用,由于采用用户名,密码登录SSH远程登录拿取数据,所以不需要安装客户端
时间同步界面
平台根据远程服务器的登录名,密码,ssh登录远程服务器,执行ntpdate 172.16.3.3(时间服务器ip)来同步时间
public String syncDate(String ip) throws IOException, InterruptedException{ RemoteShellTool tool = new RemoteShellTool(ip,"utf-8"); tool.loginCentos(); String returnString = tool.exec("ntpdate 172.16.3.2"); if(returnString.indexOf("adjust")<0) { logger.info("syncDate:"+ip+" return "+returnString); return "fail"; } Thread.sleep(1000); return viewDate(ip);}
附其他代码:
html
<!DOCTYPE html><html lang="zh-CN"><head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <link href="/css/reset.css" rel="stylesheet"> <link href="/bootstrap/css/bootstrap.min.css" rel="stylesheet"> <link href="/css/layout.css" rel="stylesheet"> <link href="/css/index/applications.css" rel="stylesheet"> <script type="text/javascript" src="/lib/jquery.js"></script> <script type="text/javascript" src="/bootstrap/js/bootstrap.min.js"></script> <script type="text/javascript" src="/bootstrap/js/jquery.bootpag.min.js"></script> <script type="text/javascript" src="/lib/avalon.js"></script> <script type="text/javascript" src="/js/common/util.js"></script> <script type="text/javascript" src="/js/common/common.js"></script> <script type="text/javascript" src="/js/index/vmtime.js"></script> <title>虚拟机时间管理</title></head><body ms-controller="vm"> <!-- HEAD --> <!--HEAD --> <div ms-include-src="'/home/header.html'"></div> <!-- Content --> <div class="container"> <div ms-controller="vmtime"><div class="tabbable"><div class="tab-content"><div class="tab-pane active" id="vms"><div id="vmsTab-pane"><br /><div class="row" id="search1Div"><div class="col-md-2"><div class="input-group"><span class="input-group-addon">环境:</span> <selectclass="form-control" ms-duplex="envType"><option value="STRESS" selected>STRESS</option><option value="ALL">全部</option><option value="SIT1">SIT1</option><option value="SIT2">SIT2</option><option value="UAT">UAT</option><option value="other">其他</option></select></div></div><div class="col-md-2" id="search2Div"><div class="input-group"><span class="input-group-addon">类型:</span> <selectclass="form-control" ms-duplex="conType"><option value="" selected>请选择</option><option value=".Net Web">.Net Web</option><option value="Windows Service">Windows Service</option><option value="Node">Node</option><option value="Java App">Java App</option><option value="Java Web">Java Web</option><option value="其他">其他</option></select></div></div><div class="col-md-1"><button type="button" id="searchBtn" class="btn btn-primary"ms-click="listVmInfosByPage('init')" style="margin: auto;">搜 索</button></div><div class="col-md-1"><button type="button" id="allCheckBtn" class="btn btn-info"ms-click="checkAll()" style="margin: auto;">全选</button></div><div class="col-md-1"><button type="button" id="allUncheckBtn" class="btn btn-info"ms-click="uncheckAll()" style="margin: auto;">全不选</button></div><div class="col-md-2"><button type="button" id="allStatusBtn"class="btn btn-success" ms-click="viewAllStatus()"style="margin: auto;">查看当前时间</button></div><div class="col-md-2"><button type="button" id="allDeployBtn"class="btn btn-warning" ms-click="deployAll()"style="margin: auto;">同步时间服务器</button></div></div><div><div id="pageSizeSelect"><a><span ms-class="{{pagesize1Cls}}"ms-click="changePageSize(pagesize1)">{{pagesize1}}</span></a> | <a><spanms-class="{{pagesize2Cls}}"ms-click="changePageSize(pagesize2)">{{pagesize2}}</span></a> | <a><spam ms-class="{{pagesize3Cls}}"ms-click="changePageSize(pagesize3)">{{pagesize3}}</spam></a></div></div><table class="table table-condensed table-hover"><thead><tr><td class="width-50"></td><td class="width-50">ID</td><td>名称</td><td class="width-125">IP</td><td class="width-100">操作系统</td><td class="width-300">当前时间</td><td class="width-50">查看</td><td class="width-50">同步</td></tr></thead><tbody><tr ms-repeat="vmsList"><td><label><input type="checkbox"ms-class="check_{{el.name}}"></label></td><td>{{$index+jpageSize*(jpageIndex-1)+1}}</td><td>{{el.name}}</td><td><a ms-href="'/admin/vmdetails.html?vmid='+el.vm.id"target="_blank">{{el.ip}}</a></td><td>{{el.os}}</td><td><label ms-class="time_{{el.name}}" /></td><td><div ms-class="buttonDiv_view_{{el.name}}"><i style="color: #009100;"ms-class="glyphicon glyphicon-eye-open icon-white i_view_{{el.name}}"ms-click="postViewStatus(el.name,el.ip,el.os)"></i></div><div ms-class="loadDiv_view_{{el.name}} loadDiv"style="display: none"><img src="/img/load2.jpg"style="width: 16px; height: 16px;" /></div></td><td><div ms-class="buttonDiv_{{el.name}}"><i style="color: #000066;"ms-class="glyphicon glyphicon-play icon-white i_{{el.name}}"ms-click="postDeploy(el.name,el.ip,el.os)"> </i></div><div ms-class="loadDiv_{{el.name}} loadDiv"style="display: none"><img src="/img/load2.jpg"style="width: 16px; height: 16px;" /></div></td></tr></tbody></table><div class="text-center"><p id="pagination"></p></div></div></div></div></div></div> </div> <!--/.container--> <!--FOOTER --> <div ms-include-src="'/home/footer.html'"></div></body></html>
js
/** * Created by chenjiazhu on 2017/5/10. */var vmtime = avalon.define({$id : 'vmtime',// VM Startpagesize1 : "20",pagesize1Cls : "pageSizeSelected",pagesize2 : "50",pagesize2Cls : "",pagesize3 : "100",pagesize3Cls : "",changePageSize : function(pgsize) {vmtime.jpageSize = pgsize;vmtime.listVmInfosByPage("init");},clearsearch : function() {vmtime.conType = "";vmtime.listVmInfosByPage("init");},jpageIndex : 1,jpageSize : 20,envType : "STRESS",conType : "",vmsList : [],listVmInfosByPage : function(tag) {if (tag) {vmtime.jpageIndex = 1;}$.ajax({type : "post",url : 'listVmInfosByPageByEnvType.action',data : {"pageindex" : vmtime.jpageIndex,"pagesize" : vmtime.jpageSize,"type" : vmtime.conType,"envType" : vmtime.envType},dataType : "json",success : function(data) {if (tag) {$('#pagination').bootpag({total : data.pagenum,page : vmtime.jpageIndex});}if (data.retCode == "1000") {vmtime.vmsList = data.vms;} else {alert(data.retMSG);}$("[class^=time]").html("");},error : function(XMLHttpRequest, textStatus, errorThrown) {alert("请求数据异常,状态码:" + XMLHttpRequest.status + ",Error:"+ errorThrown + ",textStatus:" + textStatus);}});},postViewStatus : function(name, ip,os) {$(".loadDiv_view_" + name).show();$(".buttonDiv_view_" + name).hide();$.ajax({type : "post",url : 'viewDate.action',data : {"ip" : ip,"os":os},dataType : "json",success : function(data) {$(".time_" + name).html(data.retCode);$(".loadDiv_view_" + name).hide();$(".buttonDiv_view_" + name).show();},error : function(XMLHttpRequest, textStatus, errorThrown) {alert("请求数据异常,状态码:" + XMLHttpRequest.status + ",Error:"+ errorThrown + ",textStatus:" + textStatus);$(".loadDiv_view_" + name).hide();$(".buttonDiv_view_" + name).show();}});},postDeploy : function(name, ip, os) {$(".loadDiv_" + name).show();$(".buttonDiv_" + name).hide();$.ajax({type : "post",url : 'syncDate.action',data : {"ip" : ip,"os":os},dataType : "json",success : function(data) {$(".loadDiv_" + name).hide();$(".buttonDiv_" + name).show();$(".time_" + name).html(data.retCode);},error : function(XMLHttpRequest, textStatus, errorThrown) {$(".loadDiv_" + name).hide();$(".buttonDiv_" + name).show();alert("请求数据异常,状态码:" + XMLHttpRequest.status + ",<br/>"+ XMLHttpRequest.readyState + ",<br/>"+ XMLHttpRequest.responseText + ",<br/>Error:"+ errorThrown + ",<br/>textStatus:" + textStatus);}});},viewAllStatus : function() {$("input[type='checkbox']").each(function() {if ($(this).get(0).checked) {var name = $(this).attr("class").substr(6);// alert(name);$(".i_view_" + name).click();}});},deployAll : function() {$("input[type='checkbox']").each(function() {if ($(this).get(0).checked) {var name = $(this).attr("class").substr(6);// alert(name);$(".i_" + name).click();}});},checkAll : function() {$("input[type='checkbox']").each(function() {$(this).attr("checked", "true");});},uncheckAll : function() {$("input[type='checkbox']").each(function() {$(this).removeAttr("checked");});},loadVmTAB : function() {vmtime.listVmInfosByPage("init");$('#vms').tab('show');},// VM ENDuserOps : ops(4),bootpagFuc : function() {$('#pagination').bootpag({total : 1,maxVisible : 10}).on('page', function(event, num) {vmtime.jpageIndex = num;vmtime.listVmInfosByPage();});}});/*avalon.ready(function() { appsvm.bootpagFuc(); appsvm.listApp("init"); appsvm.depList = getAllDepartments(); appsvm.envsList = getAllEnvs(); appsvm.applicationsTypeList = getAllAppType();});*/avalon.ready(function() {/*if (vmtime.userOps) {vmtime.loadVmTAB();} else {redirectAdminIndexPage();}*/vmtime.bootpagFuc();vmtime.listVmInfosByPage("init");// $(".loadDiv").hide();});vmtime.$watch("jpageSize", function(newValue) {vmtime.pagesize1Cls = "";vmtime.pagesize2Cls = "";vmtime.pagesize3Cls = "";if (newValue == vmtime.pagesize1) {vmtime.pagesize1Cls = "pageSizeSelected";} else if (newValue == vmtime.pagesize2) {vmtime.pagesize2Cls = "pageSizeSelected";} else if (newValue == vmtime.pagesize3) {vmtime.pagesize3Cls = "pageSizeSelected";}})
工具类
package com.ymt.testplatform.util;import java.io.IOException;import java.io.InputStream;import java.nio.charset.Charset;import ch.ethz.ssh2.Connection;import ch.ethz.ssh2.Session;public class RemoteShellTool {private Connection conn; private String ipAddr; private String charset = Charset.defaultCharset().toString(); private String userName; private String password; public RemoteShellTool(String ipAddr, String charset) { this.ipAddr = ipAddr; if (charset != null) { this.charset = charset; } } public RemoteShellTool(String ipAddr, String userName, String password, String charset) { this.ipAddr = ipAddr; this.userName = userName; this.password = password; if (charset != null) { this.charset = charset; } } public boolean login() throws IOException { conn = new Connection(ipAddr); conn.connect(); // 连接 return conn.authenticateWithPassword(userName, password); // 认证 } public boolean loginCentos() throws IOException{ conn = new Connection(ipAddr); conn.connect(); // 连接 String [] pass = {"ymt@123","abcd@1234","root@1234","1qaz@WSX","1234qwer"};for (String pa : pass) {if(conn.authenticateWithPassword("root", pa)){this.userName = "root"; this.password = pa; return true;}}return false;} public boolean login(String userName,String password) throws IOException { conn = new Connection(ipAddr); conn.connect(); // 连接 this.userName = userName; this.password = password; return conn.authenticateWithPassword(userName, password); // 认证 } public String exec(String cmds) { InputStream in = null; String result = ""; try { if (this.login()) { Session session = conn.openSession(); // 打开一个会话 session.execCommand(cmds); in = session.getStdout(); result = this.processStdout(in, this.charset); session.close(); conn.close(); } } catch (IOException e1) { e1.printStackTrace(); } return result; } public String processStdout(InputStream in, String charset) { byte[] buf = new byte[1024]; StringBuffer sb = new StringBuffer(); try { while (in.read(buf) != -1) { sb.append(new String(buf, charset)); } } catch (IOException e) { e.printStackTrace(); } return sb.toString(); } /** * @param args */ public static void main(String[] args) { RemoteShellTool tool = new RemoteShellTool("172.16.103.126", "ftpuser", "1qaz@WSX", "utf-8"); String result = tool.exec("sh Deploy.sh 172.16.103.121"); System.out.print("result:"+result); RemoteShellTool tool2 = new RemoteShellTool("172.16.103.121", "ftpuser", "1qaz@WSX", "utf-8"); String result2 = tool2.exec("sh tools/clientDeploy.sh"); System.out.print("result2:"+result2); } }
阅读全文
1 0
- 服务器时间同步平台化
- SQL服务器时间同步
- 时间同步服务器
- 配置同步时间服务器
- 服务器/客户端时间同步
- 服务器时间同步
- window 服务器时间同步
- 与时间服务器同步
- GPS时间同步服务器
- 服务器时间同步 centos
- 服务器时间同步
- Linux服务器时间同步
- 时间同步服务器
- 服务器时间同步
- Linux服务器时间同步
- 时间同步服务器NTP
- centos同步服务器时间
- Linux服务器同步时间
- mfc中的.rc和.rc2出错fatal error RC1015: cannot open include file 'res\ModalD
- 关于SpringMVC配置文件中的<context:component-scan >
- 坑爹!男孩打赏女主播,不知充值是在花钱---众智云
- 三九、清除页面滚动条
- URL,HTTP,端口概念
- 服务器时间同步平台化
- 之字形打印树
- Activity生命周期 笔记
- 古典小说网首页用到的源码
- JSP九大内置对象
- 使用Redis SETNX 命令实现分布式锁
- centos6.5从零到1搭建jmeter+ant+jenkins持续集成
- 各国LoRa部署情况一览
- 递归求序列最大最小值