1、项目中需要检测到几台远程服务器的参数,差了很多资料,决定用的这个

2、jar包:ganymed-ssh2-build210.jar

3、原理:向远程linux服务器发送脚本命令,得到该台服务器的信息

4、代码如下:

public class Basic {
public static void main(String[] args) {
String hostname1 = "";
String username1 = "";
String password1 = ""; String hostname2 = "";
String username2 = "";
String password2 = "";
String hostname3 = "";
String username3 = "";
String password3 = ""; /**
* 服务器1
*/
Montor montor1 = getMontor(hostname1, username1, password1);
/**
* 服务器2
*/
Montor montor2 = getMontor(hostname2, username2, password2);
/**
* 服务器3
*/
Montor montor3 = getMontor(hostname3, username3, password3);
System.out.println(montor1.toString());
System.out.println(montor2.toString());
System.out.println(montor3.toString()); } private static Montor getMontor(String hostname, String username,
String password) {
Montor montor = null;
try {
Connection conn = new Connection(hostname);
conn.connect();
boolean isAuthenticated;
isAuthenticated = conn.authenticateWithPassword(username, password); if (isAuthenticated == false)
throw new IOException("Authentication failed."); montor = new Montor();
montor.setHostName(exec(conn, "hostname"));
montor.setDiskSpace(exec(conn, "df -h | awk 'NR==2 {print $2}'"));
montor.setUserSpace(exec(conn, "df -h | awk 'NR==2 {print $3}'"));
montor.setRemainingSpace(exec(conn,
"df -h | awk 'NR==2 {print $4}'"));
montor.setMemory(exec(conn, "free -m | awk 'NR==2 {print $2}'"));
montor.setUseMemory(exec(conn, "free -m | awk 'NR==2 {print $3}'"));
montor.setRemainingMemory(exec(conn,
"free -m | awk 'NR==2 {print $4}'"));
BigDecimal b1 = new BigDecimal(exec(conn,
"free -m | awk 'NR==2 {print $3}'"));
BigDecimal b2 = new BigDecimal(exec(conn,
"free -m | awk 'NR==2 {print $2}'"));
montor.setUsageMemory((b1.divide(b2, 2, BigDecimal.ROUND_HALF_UP))
.doubleValue()
* 100 + "%");
conn.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return montor; };
/**
*
* @param conn 连接
* @param command 执行的sheel命令
* @return
*/
private static String exec(Connection conn, String command) {
String data = "";
try {
Session sess = conn.openSession();
//执行命令
sess.execCommand(command);
InputStream stdout = new StreamGobbler(sess.getStdout());
BufferedReader br = new BufferedReader(
new InputStreamReader(stdout)); while (true) {
String line = br.readLine();
if (line == null)
break;
data = line;
}
br.close();
sess.close();
} catch (IOException e) {
e.printStackTrace(System.err);
System.exit(2);
}
return data;
}
}

5、目前还需要服务器中各项服务的联通性,如tomcat,active-mq等服务 是否挂机,如有大婶知道,望告知

6、如果还有其他更好的方式望周知。

使用ganymed-ssh2-build通过ssh获得远程服务器参数的更多相关文章

  1. Mac下ssh连接远程服务器时自动断开问题

    在mac下使用securecrt通过ssh连接远程服务器时,总会一段时间没有动作后,ssh被自动断开.在windows下用xmanager貌似没有遇到过这个问题. 在网上找了解决方法如下: 客户端配置 ...

  2. 用Python写个自动ssh登录远程服务器的小工具

    很多时候我们喜欢在自己电脑的终端直接ssh连接Linux服务器,而不喜欢使用那些有UI界面的工具区连接我们的服务器.可是在终端使用ssh我们每次都需要输入账号和密码,这也是一个烦恼,所以我们可以简单的 ...

  3. [转]学习win10的bash使用ssh连接远程服务器

    1. 前言 微软已经在Win10一周年更新预览版中加入了Ubuntu Bash命令支持,相当于一个小型的linux系统,本来连接远程服务器的话,要使用putty啥的,现在可以用这个直接连接,我来讲讲步 ...

  4. ssh执行远程服务器脚本 提示php: command not found

    ssh执行远程服务器脚本 提示php: command not found 设置环境变量 一台机器作为管理机,来管理其他服务器,并通过key认证,免密码登陆的. 在管理机上通过ssh登陆到其他服务器来 ...

  5. Mac使用SSH连接远程服务器

    1. 终端通过 ssh 连接远程服务器 ssh -p 36622 root@localhost 2. 文件上传下载 上传 scp 下载 scp 3. 客户端 FinalShell(推荐) FileZi ...

  6. Linux上SSH登录远程服务器免密码

    在本地的客户端SSH到远程服务端时,每次都要输入用户名和密码,如果不想每次都输入密码则可以使用以下操作. 首先在本地的客户端输入 ssh-keygen [keysystem@localhost ~]$ ...

  7. 终端利用ssh登录远程服务器

    第一步: 安装ssh:yum  install ssh 第二步: 启动ssh服务:service sshd start 第三步: 连接远程服务器: ssh -p 端口号 用户名@ip地址      然 ...

  8. mac下ssh到远程服务器时中文乱码

    前言:mac本地的语言环境为英文,远程是支持中文的, 问题: 一开始是在iterm2下登录远程服务器更新数据库时发现中文注释不能正常显示,以为是iterms2下设置有问题,使用系统自带的termina ...

  9. VsCode通过SSH连接远程服务器开发

    前言 nil 正文 安装插件 安装VsCode官方插件 Remote - SSH Remote - SSH: Editing Configuration Files WSL(远程桌面连接需要Remot ...

随机推荐

  1. windows下安装phpcms html/ 文件夹不可写的一种错误以及解决方法

    朋友安装phpcms时遇到奇葩问题,环境搭建在windows7中,竟然出现 html/ 和 phpsso_server/caches/文件夹不可写问题(如图) 在windows下出现这种权限的问题真不 ...

  2. HTML&CSS基础学习笔记1.20-DIV标签2

    <span>标签 标签div把文档分割为独立的.不同的部分,而在HTML中,<span>标签则被用来组合文档中的行内元素. 看个实例: <!DOCTYPE html> ...

  3. 来,试试PERL

    试试,看看能否真的替代AWK,SED这些的... #!/usr/bin/perl print "hello, world!\n"; $line = <STDIN>; i ...

  4. ThrottleStop

    ThrottleStop 我的要开这个软件,睿频才能开.不然一直工作在1.8Ghz下默认频率太低了开了这个速度才有提升

  5. Manage Spring Boot Logs with Elasticsearch, Logstash and Kibana

    下载地址:https://www.elastic.co/downloads When time comes to deploy a new project, one often overlooked ...

  6. [VBA]根据身份证号码计算年龄的Excel函数

    是的,昨天刚发表了一篇和Excel自定义函数有关的博客,今天又一篇,有凑数的嫌疑.但是,保存知识和传播知识本来就是写博客的初衷,所以也并不多余. 如果不知道什么是Excel自定义函数,请移步这里[1] ...

  7. PHP null常量和null字节的区别

    在学习isset()时,看到了这句话:“如果已经使用 unset() 释放了一个变量之后,它将不再是 isset().若使用 isset() 测试一个被设置成 NULL 的变量,将返回 FALSE.同 ...

  8. mybatis学习笔记第一讲

    第一步:先配置mybatis配置 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE confi ...

  9. PhoneGap 和 PhoneGap Build 是什么?

    PhoneGap是目前唯一支持7种平台的开源移动开发框架,支持的平台包括iOS.Android.BlackBerry OS.Palm WebOS.Windows Phone 7.Symbian和Bad ...

  10. 浅谈管道模型(Pipeline)

    本篇和大家谈谈一种通用的设计与处理模型--Pipeline(管道). Pipeline简单介绍 Pipeline模型最早被使用在Unix操作系统中.据称,假设说Unix是计算机文明中最伟大的发明,那么 ...