• 服务器磁盘查看平台化


    针对Linux服务器,用平台一键、磁盘占用,由于采用用户名,密码登录SSH远程登录拿取数据,所以不需要安装客户端

    原文地址:http://blog.csdn.net/chenjiazhu/article/details/77532484

    查看磁盘占用

    平台根据远程服务器的登录名,密码,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("
    ");
    			 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);  
      
        }  
      
    }
    

    查看磁盘占用

    平台根据远程服务器的登录名,密码,ssh登录远程服务器,执行df -lh获取数据

     

    [java] view plain copy
     
    1. public int[] viewDisk(String ip) throws IOException, InterruptedException  
    2.     {  
    3.          RemoteShellTool tool = new RemoteShellTool(ip,"utf-8");  
    4.          tool.loginCentos();  
    5.          String returnString = tool.exec("df -lh");   
    6.            
    7.          int  data[];  
    8.            
    9.          if(returnString.indexOf("Filesystem")<0)  
    10.          {  
    11.              logger.info("viewDisk:"+ip+" return "+returnString);     
    12.              data=new int[]{0,0};  
    13.          }  
    14.          else {  
    15.              returnString=returnString.replaceAll(" +"," ");  
    16.              String result[]=returnString.split(" ");  
    17.              String res1[] = result[1].split(" ");  
    18.                
    19.              data=new int[]{Integer.parseInt(res1[3].substring(0, res1[3].length()-1)),Integer.parseInt(res1[1].substring(0, res1[1].length()-1))};  
    20.         }  
    21.          return data;  
    22.     }     

    附其他代码:

    html

    [html] view plain copy
     
    1. <!DOCTYPE html>  
    2. <html lang="zh-CN">  
    3.   
    4. <head>  
    5.     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
    6.     <link href="/css/reset.css" rel="stylesheet">  
    7.     <link href="/bootstrap/css/bootstrap.min.css" rel="stylesheet">  
    8.     <link href="/css/layout.css" rel="stylesheet">  
    9.     <script type="text/javascript" src="/lib/jquery.js"></script>  
    10.     <script type="text/javascript" src="/bootstrap/js/bootstrap.min.js"></script>  
    11.     <script type="text/javascript" src="/lib/avalon.js"></script>  
    12.     <script type="text/javascript" src="/js/common/util.js"></script>  
    13.     <script type="text/javascript" src="/js/common/common.js"></script>  
    14.     <script type="text/javascript" src="/js/index/vmdetails.js"></script>  
    15.     <title>虚拟机详情</title>  
    16. </head>  
    17.   
    18. <body ms-controller="vm">  
    19.     <!-- HEAD -->  
    20.     <!--HEAD -->  
    21.     <div ms-include-src="'/home/header.html'"></div>  
    22.     <!-- Content -->  
    23.     <div class="container">  
    24.         <div ms-controller="vmdetailsvm">  
    25.             <div class="panel panel-default">  
    26.                 <div class="panel-heading">  
    27.                     <h3 class="panel-title">虚拟机 : {{vmip}}</h3>  
    28.                 </div>  
    29.                 <div class="panel-body">  
    30.                     <table class="table table-bordered">  
    31.                         <thead>  
    32.                             <tr>  
    33.                                 <td class="width-50">ID</td>  
    34.                                 <td>域名</td>  
    35.                                 <td>名称</td>  
    36.                                 <td class="width-200">应用类型</td>  
    37.                                 <td class="width-100">部门</td>  
    38.                                 <td class="width-100">负责人</td>  
    39.                             </tr>  
    40.                         </thead>  
    41.                         <tbody>  
    42.                             <tr ms-repeat="appenvs">  
    43.                                 <td>{{$index+1}}</td>  
    44.                                 <td>{{el.application.domain}}</td>  
    45.                                 <td>{{el.application.name}}</td>  
    46.                                 <td>{{el.application.applicationtype.type}}</td>  
    47.                                 <td>{{el.application.department.name}}</td>  
    48.                                 <td>{{el.application.devs}}</td>  
    49.                             </tr>  
    50.                         </tbody>  
    51.                     </table>  
    52.                 </div>  
    53.             </div>  
    54.         </div>  
    55.     </div>  
    56.     <!--FOOTER -->  
    57.     <div ms-include-src="'/home/footer.html'"></div>  
    58. </body>  
    59.   
    60. </html>  

     

    js

     

    [javascript] view plain copy
     
    1. /** 
    2.  * Created by chenjiazhu on 2017/5/10. 
    3.  */  
    4. var vmdisk = avalon.define({  
    5.     $id : 'vmdisk',  
    6.   
    7.     // VM Start  
    8.     pagesize1 : "20",  
    9.     pagesize1Cls : "pageSizeSelected",  
    10.     pagesize2 : "50",  
    11.     pagesize2Cls : "",  
    12.     pagesize3 : "100",  
    13.     pagesize3Cls : "",  
    14.     changePageSize : function(pgsize) {  
    15.         vmdisk.jpageSize = pgsize;  
    16.         vmdisk.listVmInfosByPage("init");  
    17.     },  
    18.     clearsearch : function() {  
    19.         vmdisk.conType = "";  
    20.         vmdisk.listVmInfosByPage("init");  
    21.     },  
    22.     jpageIndex : 1,  
    23.     jpageSize : 20,  
    24.     envType : "STRESS",  
    25.     conType : "",  
    26.   
    27.     vmsList : [],  
    28.   
    29.     listVmInfosByPage : function(tag) {  
    30.         if (tag) {  
    31.             vmdisk.jpageIndex = 1;  
    32.         }  
    33.         $.ajax({  
    34.             type : "post",  
    35.             url : 'listVmInfosByPageByEnvType.action',  
    36.             data : {  
    37.                 "pageindex" : vmdisk.jpageIndex,  
    38.                 "pagesize" : vmdisk.jpageSize,  
    39.                 "type" : vmdisk.conType,  
    40.                 "envType" : vmdisk.envType  
    41.             },  
    42.             dataType : "json",  
    43.             success : function(data) {  
    44.                 if (tag) {  
    45.                     $('#pagination').bootpag({  
    46.                         total : data.pagenum,  
    47.                         page : vmdisk.jpageIndex  
    48.                     });  
    49.                 }  
    50.                 if (data.retCode == "1000") {  
    51.                     vmdisk.vmsList = data.vms;  
    52.                 } else {  
    53.                     alert(data.retMSG);  
    54.                 }  
    55.   
    56.                 $("[class^=free]").html("");  
    57.                 $("[class^=total]").html("");  
    58.                 $("[class*=progress-bar]").css("width""0%");  
    59.             },  
    60.             error : function(XMLHttpRequest, textStatus, errorThrown) {  
    61.                 alert("请求数据异常,状态码:" + XMLHttpRequest.status + ",Error:"  
    62.                         + errorThrown + ",textStatus:" + textStatus);  
    63.             }  
    64.         });  
    65.     },  
    66.   
    67.     postViewStatus : function(name, ip, os) {  
    68.   
    69.         $(".loadDiv_view_" + name).show();  
    70.         $(".buttonDiv_view_" + name).hide();  
    71.   
    72.         $  
    73.                 .ajax({  
    74.                     type : "post",  
    75.                     url : 'viewDisk.action',  
    76.                     data : {  
    77.                         "ip" : ip,  
    78.                         "os" : os  
    79.                     },  
    80.                     dataType : "json",  
    81.   
    82.                     success : function(data) {  
    83.   
    84.                         if (data.retCode == "1") {  
    85.                             $(".free_" + name).html("fail");  
    86.                             $(".total_" + name).html("fail");  
    87.                         } else {  
    88.                             $(".free_" + name).html(data.result[0]);  
    89.                             $(".total_" + name).html(data.result[1]);  
    90.                               
    91.                             var processdata = 100  
    92.                                     - (data.result[0] * 100 / data.result[1]);  
    93.                             $(".process_" + name).css("width", processdata+"%");  
    94.   
    95.                             if (processdata > 90) {  
    96.                                 $(".process_" + name).removeClass(  
    97.                                         "progress-bar-success");  
    98.                                 $(".process_" + name).addClass(  
    99.                                         "progress-bar-danger");  
    100.                             } else {  
    101.                                 if (processdata > 60) {  
    102.                                     $(".process_" + name).removeClass(  
    103.                                             "progress-bar-success");  
    104.                                     $(".process_" + name).addClass(  
    105.                                             "progress-bar-warning");  
    106.                                 }  
    107.                             }  
    108.   
    109.                         }  
    110.                         $(".loadDiv_view_" + name).hide();  
    111.                         $(".buttonDiv_view_" + name).show();  
    112.                     },  
    113.                     error : function(XMLHttpRequest, textStatus, errorThrown) {  
    114.                         alert("请求数据异常,状态码:" + XMLHttpRequest.status + ",Error:"  
    115.                                 + errorThrown + ",textStatus:" + textStatus);  
    116.                         $(".loadDiv_view_" + name).hide();  
    117.                         $(".buttonDiv_view_" + name).show();  
    118.                     }  
    119.                 });  
    120.   
    121.     },  
    122.   
    123.     viewAllStatus : function() {  
    124.         $("input[type='checkbox']").each(function() {  
    125.             if ($(this).get(0).checked) {  
    126.   
    127.                 var name = $(this).attr("class").substr(6);  
    128.                 // alert(name);  
    129.                 $(".i_view_" + name).click();  
    130.             }  
    131.   
    132.         });  
    133.     },  
    134.   
    135.     checkAll : function() {  
    136.         $("input[type='checkbox']").each(function() {  
    137.             $(this).attr("checked""true");  
    138.         });  
    139.     },  
    140.   
    141.     uncheckAll : function() {  
    142.         $("input[type='checkbox']").each(function() {  
    143.             $(this).removeAttr("checked");  
    144.         });  
    145.     },  
    146.   
    147.     loadVmTAB : function() {  
    148.         vmdisk.listVmInfosByPage("init");  
    149.         $('#vms').tab('show');  
    150.     },  
    151.     // VM END  
    152.     userOps : ops(4),  
    153.     bootpagFuc : function() {  
    154.   
    155.         $('#pagination').bootpag({  
    156.             total : 1,  
    157.             maxVisible : 10  
    158.         }).on('page'function(event, num) {  
    159.             vmdisk.jpageIndex = num;  
    160.             vmdisk.listVmInfosByPage();  
    161.         });  
    162.     }  
    163. });  
    164.   
    165. /* 
    166.  * avalon.ready(function() { appsvm.bootpagFuc(); appsvm.listApp("init"); 
    167.  * appsvm.depList = getAllDepartments(); appsvm.envsList = getAllEnvs(); 
    168.  * appsvm.applicationsTypeList = getAllAppType(); }); 
    169.  */  
    170.   
    171. avalon.ready(function() {  
    172.     /* 
    173.      * if (vmdisk.userOps) { vmdisk.loadVmTAB(); } else { 
    174.      * redirectAdminIndexPage(); } 
    175.      */  
    176.     vmdisk.bootpagFuc();  
    177.     vmdisk.listVmInfosByPage("init");  
    178.     // $(".loadDiv").hide();  
    179. });  
    180.   
    181. vmdisk.$watch("jpageSize"function(newValue) {  
    182.     vmdisk.pagesize1Cls = "";  
    183.     vmdisk.pagesize2Cls = "";  
    184.     vmdisk.pagesize3Cls = "";  
    185.     if (newValue == vmdisk.pagesize1) {  
    186.         vmdisk.pagesize1Cls = "pageSizeSelected";  
    187.     } else if (newValue == vmdisk.pagesize2) {  
    188.         vmdisk.pagesize2Cls = "pageSizeSelected";  
    189.     } else if (newValue == vmdisk.pagesize3) {  
    190.         vmdisk.pagesize3Cls = "pageSizeSelected";  
    191.     }  
    192. })  

     

    工具类

    [java] view plain copy
     
    1. package com.ymt.testplatform.util;  
    2.   
    3. import java.io.IOException;  
    4. import java.io.InputStream;  
    5. import java.nio.charset.Charset;  
    6.   
    7. import ch.ethz.ssh2.Connection;  
    8. import ch.ethz.ssh2.Session;  
    9.   
    10. public class RemoteShellTool {  
    11.     private Connection conn;    
    12.     private String ipAddr;    
    13.     private String charset = Charset.defaultCharset().toString();    
    14.     private String userName;    
    15.     private String password;    
    16.     
    17.     public RemoteShellTool(String ipAddr, String charset) {    
    18.         this.ipAddr = ipAddr;    
    19.         if (charset != null) {    
    20.             this.charset = charset;    
    21.         }    
    22.     }    
    23.       
    24.     public RemoteShellTool(String ipAddr, String userName, String password,    
    25.             String charset) {    
    26.         this.ipAddr = ipAddr;    
    27.         this.userName = userName;    
    28.         this.password = password;    
    29.         if (charset != null) {    
    30.             this.charset = charset;    
    31.         }    
    32.     }    
    33.     
    34.     public boolean login() throws IOException {    
    35.         conn = new Connection(ipAddr);    
    36.         conn.connect(); // 连接    
    37.         return conn.authenticateWithPassword(userName, password); // 认证    
    38.     }    
    39.       
    40.     public boolean loginCentos() throws IOException  
    41.     {  
    42.          conn = new Connection(ipAddr);    
    43.          conn.connect(); // 连接    
    44.           
    45.         String [] pass = {"ymt@123","abcd@1234","root@1234","1qaz@WSX","1234qwer"};  
    46.           
    47.         for (String pa : pass) {  
    48.             if(conn.authenticateWithPassword("root", pa))  
    49.             {  
    50.                 this.userName = "root";    
    51.                 this.password = pa;    
    52.                 return true;  
    53.             }  
    54.         }         
    55.           
    56.         return false;  
    57.           
    58.     }  
    59.     
    60.     public boolean login(String userName,String password) throws IOException {    
    61.         conn = new Connection(ipAddr);    
    62.         conn.connect(); // 连接    
    63.         this.userName = userName;    
    64.         this.password = password;    
    65.         return conn.authenticateWithPassword(userName, password); // 认证    
    66.     }    
    67.     
    68.     public String exec(String cmds) {    
    69.         InputStream in = null;    
    70.         String result = "";    
    71.         try {    
    72.             if (this.login()) {    
    73.                 Session session = conn.openSession(); // 打开一个会话    
    74.                 session.execCommand(cmds);    
    75.                     
    76.                 in = session.getStdout();    
    77.                 result = this.processStdout(in, this.charset);    
    78.                 session.close();    
    79.                 conn.close();    
    80.             }    
    81.         } catch (IOException e1) {    
    82.             e1.printStackTrace();    
    83.         }    
    84.         return result;    
    85.     }    
    86.     
    87.     public String processStdout(InputStream in, String charset) {    
    88.         
    89.         byte[] buf = new byte[1024];    
    90.         StringBuffer sb = new StringBuffer();    
    91.         try {    
    92.             while (in.read(buf) != -1) {    
    93.                 sb.append(new String(buf, charset));    
    94.             }    
    95.         } catch (IOException e) {    
    96.             e.printStackTrace();    
    97.         }    
    98.         return sb.toString();    
    99.     }    
    100.     
    101.     /**  
    102.      * @param args  
    103.      */    
    104.     public static void main(String[] args) {    
    105.     
    106.         RemoteShellTool tool = new RemoteShellTool("172.16.103.126""ftpuser",    
    107.                 "1qaz@WSX""utf-8");    
    108.     
    109.         String result = tool.exec("sh Deploy.sh 172.16.103.121");    
    110.         System.out.print("result:"+result);    
    111.           
    112.         RemoteShellTool tool2 = new RemoteShellTool("172.16.103.121""ftpuser",    
    113.                 "1qaz@WSX""utf-8");    
    114.     
    115.         String result2 = tool2.exec("sh tools/clientDeploy.sh");    
    116.         System.out.print("result2:"+result2);    
    117.     
    118.     }    
    119.     
    120. }  
  • 相关阅读:
    monkey Test 环境配置
    python +ps 三方面库整理
    python +selenium +chrome/firefox 环境配置
    react-webpack config webpack@3.4.1
    解决reportNG中文乱码(转:http://www.it610.com/article/3626590.htm)
    (转)Maven的pom.xml文件配置使用
    Maven使用基础
    Myeclipse下配置SVN报错问题 svn: E175002: java.lang.RuntimeException: Could not generate DH keypair(转)
    [转]华为离职副总裁徐家骏的工作感悟
    【转】应用宝基于Robotium自动化测试
  • 原文地址:https://www.cnblogs.com/chenjiazhu/p/7473618.html
Copyright © 2020-2023  润新知