服务器磁盘查看平台化

针对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);  
  
    }  
  
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值