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. php如何实现上传图片文件,并替换

    首先建立两个文件: change.html 和 change.php change.html 文件的表单代码如下: <html><head> <title>chan ...

  2. 神奇的match和replace

    源自跟奈落大叔的讨论,PHP和JavaScript的比较. 正则: 先说几个正则写法: () 选择匹配一组, (?:) 降低 () 的优先级, .*? 和 .+? ,阻止 . 和 + 的贪婪. 还有一 ...

  3. dede后台反应特别慢-转

    找到织梦后台管理目录下的/templets/index_body.htm文件 将第25行至第35行部分js代码注释掉. 就这么简单

  4. 开发支付宝支付用DELPHI实现 RSA签名

    近来根据业务需求 在ERP中集成了微信支付,支付宝支付,开发支付宝支付时最大的障碍就是RSA签名,找了很多资料,最终用 下了个libeay32.pas  根据网上资料最终解决了问题 function  ...

  5. apache 启动不了

    netstat -ano|findstr "443" 发现443端口被占 记录下443端口对应的PID 进入任务管理器,查看进程,发现为一个叫做vmware-hostd.exe的进 ...

  6. 2015第24周一Spring事务

    1. Spring事务管理简介 (1)Spring为多种不同类型的事务管理机制提供统一编程模型,这些事务管理模型包括JTA.JDBC.Hibernate.JPA和JDO. (2)Spring支持声明式 ...

  7. 介绍几个移动web app开发框架

    jQuery Mobile jQuery Mobile框架能够帮助你快速开发出支持多种移动设备的Mobile应用用户界面.jQuery Mobile最新版本是1.4.0,默认主题采用扁平化设计风格.j ...

  8. Ajax--json(Ajax调用返回json封装代码、格式及注意事项)

    Ajax调用json封装代码<dbda.php>: //Ajax调用返回JSON public function JsonQuery($sql,$type=1,$db="mydb ...

  9. Annotation(三)——Spring注解开发

    Spring框架的核心功能IoC(Inversion of Control),也就是通过Spring容器进行对象的管理,以及对象之间组合关系的映射.通常情况下我们会在xml配置文件中进行action, ...

  10. 使用markdown语法撰写csdn博客

    在CSDN之下写blog无疑是一件非常吃力的事情,对于非常多simple爱好者来讲,能用markdown语法来书写代码是最优雅简洁只是的了.本文主要介绍markdown语法和怎样它来撰写csdn下的b ...