针对linux服务器,用平台一键、磁盘占用,由于采用用户名,密码登录SSH远程登录拿取数据,所以不需要安装客户端
查看磁盘占用
平台根据远程服务器的登录名,密码,ssh登录远程服务器,执行df -lh获取数据
public int[] viewDisk(String ip) throws IOException, InterruptedException
{
RemoteShellTool tool = new RemoteShellTool(ip,"utf-8");
tool.loginCentos();
String returnString = tool.exec("df -lh");
int data[];
if(returnString.indexOf("Filesystem")<0)
{
logger.info("viewDisk:"+ip+" return "+returnString);
data=new int[]{0,0};
}
else {
returnString=returnString.replaceAll(" +"," ");
String result[]=returnString.split("\n");
String res1[] = result[1].split(" ");
data=new int[]{Integer.parseInt(res1[3].substring(0, res1[3].length()-1)),Integer.parseInt(res1[1].substring(0, res1[1].length()-1))};
}
return data;
}
附其他代码:
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">
<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="/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/vmdetails.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="vmdetailsvm">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">虚拟机 : {{vmip}}</h3>
</div>
<div class="panel-body">
<table class="table table-bordered">
<thead>
<tr>
<td class="width-50">ID</td>
<td>域名</td>
<td>名称</td>
<td class="width-200">应用类型</td>
<td class="width-100">部门</td>
<td class="width-100">负责人</td>
</tr>
</thead>
<tbody>
<tr ms-repeat="appenvs">
<td>{{$index+1}}</td>
<td>{{el.application.domain}}</td>
<td>{{el.application.name}}</td>
<td>{{el.application.applicationtype.type}}</td>
<td>{{el.application.department.name}}</td>
<td>{{el.application.devs}}</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<!--FOOTER -->
<div ms-include-src="'/home/footer.html'"></div>
</body>
</html>
js
/**
* Created by chenjiazhu on 2017/5/10.
*/
var vmdisk = avalon.define({
$id : 'vmdisk',
// VM Start
pagesize1 : "20",
pagesize1Cls : "pageSizeSelected",
pagesize2 : "50",
pagesize2Cls : "",
pagesize3 : "100",
pagesize3Cls : "",
changePageSize : function(pgsize) {
vmdisk.jpageSize = pgsize;
vmdisk.listVmInfosByPage("init");
},
clearsearch : function() {
vmdisk.conType = "";
vmdisk.listVmInfosByPage("init");
},
jpageIndex : 1,
jpageSize : 20,
envType : "STRESS",
conType : "",
vmsList : [],
listVmInfosByPage : function(tag) {
if (tag) {
vmdisk.jpageIndex = 1;
}
$.ajax({
type : "post",
url : 'listVmInfosByPageByEnvType.action',
data : {
"pageindex" : vmdisk.jpageIndex,
"pagesize" : vmdisk.jpageSize,
"type" : vmdisk.conType,
"envType" : vmdisk.envType
},
dataType : "json",
success : function(data) {
if (tag) {
$('#pagination').bootpag({
total : data.pagenum,
page : vmdisk.jpageIndex
});
}
if (data.retCode == "1000") {
vmdisk.vmsList = data.vms;
} else {
alert(data.retMSG);
}
$("[class^=free]").html("");
$("[class^=total]").html("");
$("[class*=progress-bar]").css("width", "0%");
},
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 : 'viewDisk.action',
data : {
"ip" : ip,
"os" : os
},
dataType : "json",
success : function(data) {
if (data.retCode == "1") {
$(".free_" + name).html("fail");
$(".total_" + name).html("fail");
} else {
$(".free_" + name).html(data.result[0]);
$(".total_" + name).html(data.result[1]);
var processdata = 100
- (data.result[0] * 100 / data.result[1]);
$(".process_" + name).css("width", processdata+"%");
if (processdata > 90) {
$(".process_" + name).removeClass(
"progress-bar-success");
$(".process_" + name).addClass(
"progress-bar-danger");
} else {
if (processdata > 60) {
$(".process_" + name).removeClass(
"progress-bar-success");
$(".process_" + name).addClass(
"progress-bar-warning");
}
}
}
$(".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();
}
});
},
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();
}
});
},
checkAll : function() {
$("input[type='checkbox']").each(function() {
$(this).attr("checked", "true");
});
},
uncheckAll : function() {
$("input[type='checkbox']").each(function() {
$(this).removeAttr("checked");
});
},
loadVmTAB : function() {
vmdisk.listVmInfosByPage("init");
$('#vms').tab('show');
},
// VM END
userOps : ops(4),
bootpagFuc : function() {
$('#pagination').bootpag({
total : 1,
maxVisible : 10
}).on('page', function(event, num) {
vmdisk.jpageIndex = num;
vmdisk.listVmInfosByPage();
});
}
});
/*
* avalon.ready(function() { appsvm.bootpagFuc(); appsvm.listApp("init");
* appsvm.depList = getAllDepartments(); appsvm.envsList = getAllEnvs();
* appsvm.applicationsTypeList = getAllAppType(); });
*/
avalon.ready(function() {
/*
* if (vmdisk.userOps) { vmdisk.loadVmTAB(); } else {
* redirectAdminIndexPage(); }
*/
vmdisk.bootpagFuc();
vmdisk.listVmInfosByPage("init");
// $(".loadDiv").hide();
});
vmdisk.$watch("jpageSize", function(newValue) {
vmdisk.pagesize1Cls = "";
vmdisk.pagesize2Cls = "";
vmdisk.pagesize3Cls = "";
if (newValue == vmdisk.pagesize1) {
vmdisk.pagesize1Cls = "pageSizeSelected";
} else if (newValue == vmdisk.pagesize2) {
vmdisk.pagesize2Cls = "pageSizeSelected";
} else if (newValue == vmdisk.pagesize3) {
vmdisk.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);
}
}