使用ganymed-ssh2-build通过ssh获得远程服务器参数

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、如果还有其他更好的方式望周知。

时间: 2024-10-07 21:59:17

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

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

在mac下使用securecrt通过ssh连接远程服务器时,总会一段时间没有动作后,ssh被自动断开.在windows下用xmanager貌似没有遇到过这个问题. 在网上找了解决方法如下: 客户端配置: Global.ini文件中将D:"Disconnect After Resume Timeout"=00000000改为D:"Disconnect After Resume Timeout"=FFFFFFFF securecrt界面上配置:send string \

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

很多时候我们喜欢在自己电脑的终端直接ssh连接Linux服务器,而不喜欢使用那些有UI界面的工具区连接我们的服务器.可是在终端使用ssh我们每次都需要输入账号和密码,这也是一个烦恼,所以我们可以简单的打造一个在Linux/Mac os运行的自动ssh登录远程服务器的小工具.来个GIF动画示例下先: 概述 我们先理一下我们需要些什么功能: 1. 添加/删除连接服务器需要的IP,端口,密码 2. 自动输入密码登录远程服务器 对,我们就做这么简单的功能 开始写代码代码比较长,所以我也放在在Github

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

设置环境变量 一台机器作为管理机,来管理其他服务器,并通过key认证,免密码登陆的. 在管理机上通过ssh登陆到其他服务器来远程执行命令 ssh [email protected] "cmd" 执行远程服务器上的某个脚本,却报错,提示PHP:command not found 找不到php命令 远程机 which php  结果是/usr/local/php/bin/php echo $PATH 结果是  已经添加到PATH中了,却不好使 解决:在远程机上执行 ln -s /usr/l

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

在本地的客户端SSH到远程服务端时,每次都要输入用户名和密码,如果不想每次都输入密码则可以使用以下操作. 首先在本地的客户端输入 ssh-keygen [[email protected] ~]$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/keysystem/.ssh/id_rsa): Created directory '/home/keysyste

python ssh 连接远程服务器,修改文本内容,调用脚本

今天小编get到一个用python的paramiko库创建ssh对象,连接到远程服务器,并且修改文件内容,调用脚本的好方法!! 主角当然是paramiko库啦,利用paramiko创建一个ssh对象,用于连接远程服务器 import paramiko ssh = paramiko.SSHClient()#创建SSH对象 设置允许连接不在know_hosts的主机,ssh会将 访问过计算机的公钥(public key)都记录在~/.ssh/known_hosts,当下次访问相同计算机时,OpenS

Cygwin安装进阶——通过ssh打开远程服务器GUI程序

原创 sdulmy 最后发布于2019-07-06 19:54:27 阅读数 179 收藏 展开 https://www.cnblogs.com/ChenChangXiong/p/11713852.html https://sourceforge.net/projects/xming/ https://blog.csdn.net/u014303046/article/details/78752909?utm_source=blogkpcl0 Cygwin安装,自行Google,基本就是下一步.常

SSH设置别名访问远程服务器

一般使用ssh访问远程服务器的命令是:ssh [email protected]地址, 例如:ssh [email protected],然后输入密码即可访问. 以Mac OS为例,其他操作系统,根据目录自行查找 设置如下: 使用cd ~/.ssh/ 进入ssh目录,会看到有config.known_hosts两个文件,一般的没有设置的话,只会有known_hosts,可以使用touch config命令创建config文件. 使用vim编辑config文件,添加如下内容: Host jhd H

Linux上实现ssh免密码登陆远程服务器

0.说明 平常使用ssh登陆远程服务器时,都需要使用输入密码,希望可以实现通过密钥登陆而免除输入密码,从而可以为以后实现批量自动部署主机做好准备. 环境如下: IP地址 操作系统 服务器端 10.0.0.128/24 CentOS 6.5 x86 客户端 10.0.0.129/24 Ubuntu 16.04 x86 1.客户端生成密钥对 生成密钥对: [email protected]:~$ ssh-keygen -t rsa -b 2048 Generating public/private 

利用ssh-copy-id无需密码登录远程服务器

本地机器生成公钥和私钥 ssh-keygen -t rsa 一路回车,最后会在~/.ssh目录下生成id_rsa和id_rsa.pub这两个文件. 与远程服务器建立信任机制 ssh-copy-id -i /root/.ssh/id_rsa.pub -p 远程服务器ssh端口 [email protected]远程服务器IP 输入密码,成功连接后.后续再次连接就不需要密码了. 后续在本地机器通过 ssh -p 远程服务器端口 [email protected]远程服务器IP 不需要输入密码也可正常