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. 类和对象:给大家介绍对象 - 零基础入门学习Python036

    类和对象:给大家介绍对象 让编程改变世界 Change the world by program 我们之前说过Python无处不对象,Python到处都是对象,然后你会发现很多童鞋其实并不知道对象是什 ...

  2. Swift数据类型之整型和浮点型-备

    Swift提供8.16.32.64位形式的有符号及无符号整数.这些整数类型遵循C语言的命名规约,我归纳了Swift中的整型: 整型示例: print("UInt8 range: \(UInt ...

  3. 通过内省机制设置JavaBean

    一.步骤: 1)使用PropertyDescriptor类获取属性描述者对象 //pd引用Student的name属性 PropertyDescriptor pd = new PropertyDesc ...

  4. form 和 ngModel

    参考 https://docs.angularjs.org/api/ng/type/ngModel.NgModelController https://docs.angularjs.org/api/n ...

  5. 吃午饭前,按书上的代码写会儿--Hunt the Wumpus第一个版本

    有空就要慢慢练起~~~~脑袋动起来是很快乐的事儿....:) <易学PYTHON>演练一遍. from random import choice cave_numbers = range( ...

  6. linux vmstat使用说明

    FIELD DESCRIPTION FOR VM MODE Procs r: The number of processes waiting for run time. 表示运行队列,就是说多少个进程 ...

  7. 能取悦生理期的女性吗?Le Parcel提供女性卫生用品按月订购服务,不是按包出售而是可以按片自由搭配 | 36氪

    能取悦生理期的女性吗?Le Parcel提供女性卫生用品按月订购服务,不是按包出售而是可以按片自由搭配 | 36氪 能取悦生理期的女性吗?Le Parcel提供女性卫生用品按月订购服务,不是按包出售而 ...

  8. paip.sql索引优化----join 代替子查询法

    paip.sql索引优化----join 代替子查询法 作者Attilax ,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.n ...

  9. Gwt ListBox选中自动触发事件

    以前用TreeView显示,需求更改 需要做一个ListBox控件显示数据,和HTML中的<Select>标签一样 编辑时候自动触发选中的数据子类: 1.只要自动触发了rootListBo ...

  10. js如何获取object类型里的键值

    最近遇到一个问题: var obj = {"name1":"张三","name2":"李四"}; var key = & ...