`
征途2010
  • 浏览: 247598 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

远程采集服务器指标信息(一) 远程通过SSH执行命令

阅读更多

远程采集服务器信息,比如说磁盘信息、内存信息。

现介绍java通过SSH执行命令采集服务器信息,比如说执行df、ls、top。

/**
 * 
 * SSH远程执行shell类
 */
public class SSHSession implements IRemoteSession {
    
    /** SSH连接 */
    private Connection conn;
    
    private NodeInfoVO nodeInfoVO;
    
    private InputStream stdOut = null;
    
    private String charset = Charset.defaultCharset().toString();
    
    private static final int TIME_OUT = 1000 * 5 * 60;
    
    
    private static final Logger LOGGER = Logger.getLogger(SSHSession.class);
    
    /**
     * 构造函数
     * 
     * @param nodeInfoVO
     */
    public SSHSession(NodeInfoVO nodeInfoVO) {
        this.nodeInfoVO = nodeInfoVO;
    }
    
    /**
     * 登录
     * 
     * @return
     * @throws IOException
     */
    private boolean login() throws IOException {
        conn = new Connection(nodeInfoVO.getServerIp());
        conn.connect();
        return conn.authenticateWithPassword(nodeInfoVO.getServerUserName(), nodeInfoVO.getServerPassword());
    }
    
    /**
     * 执行脚本
     * 
     * @param cmds
     * @return
     * @throws Exception
     */
    public String execCommand(String cmds) {
        
        String outStr = "";
        try {
            if (login()) {
                // Open a new {@link Session} on this connection
                Session session = conn.openSession();
                // Execute a command on the remote machine.
                session.execCommand(cmds);
                
                stdOut = new StreamGobbler(session.getStdout());
                outStr = processStream(stdOut, charset);
                
                session.waitForCondition(ChannelCondition.EXIT_STATUS, TIME_OUT);
                
            } else {
                LOGGER.error("登录远程机器失败"); // 自定义异常类 实现略
            }
        } catch (Exception e) {
            return outStr;
        } finally {
            close();
        }
        return outStr;
    }
    
    /**
     * @param in
     * @param charset
     * @return
     * @throws IOException
     * @throws UnsupportedEncodingException
     */
    private String processStream(InputStream in, String charset) throws Exception {
        byte[] buf = new byte[1024];
        StringBuilder sb = new StringBuilder();
        while (in.read(buf) != -1) {
            sb.append(new String(buf, charset));
        }
        return sb.toString();
    }
    
     public static void main(String args[]) throws Exception {
	     SSHSession exe = new SSHSession(new ServerBean("10.10.5.219", 22, "root", "tt"));
	     System.out.println(exe.execCommand("ls "));
     }
    
    /**
     * @return 获取 serverBean属性值
     */
    public NodeInfoVO getNodeInfoVO() {
        return nodeInfoVO;
    }

    /**
     * 
     * @see com.comtop.numen.monitor.collection.appservice.device.remote.IRemoteSession#close()
     */
    @Override
    public void close() {
        if (conn != null) {
            conn.close();
        }
        IOUtils.closeQuietly(stdOut);
    }

 

分享到:
评论

相关推荐

    shell脚本,通过snmp方式获取远程服务器的CPU内存和硬盘的使用率

    总的来说,通过学习和实践这样的Shell脚本,你可以有效地自动化监控远程服务器的关键性能指标,从而提高IT运维的效率和响应速度。这个过程不仅涉及到了Shell脚本编程,还涉及到对SNMP协议的理解和应用,对于提升IT...

    通过SSHPASS执行命令及相关脚本

    7. **Java SSH库**:在Java环境中,可以使用JSch库执行类似操作,它允许通过编程方式实现SSH连接和命令执行。 8. **操作系统兼容性**:虽然`sshpass`主要是在Linux下使用,但在某些情况下也可以在其他支持SSH的Unix...

    基于SSH的Python/Linux服务器远程管理客户端设计源码

    该项目是一款基于SSH的Python/Linux服务器远程管理客户端设计源码,包含137个文件,其中73个PNG图片文件、48个Python源文件、4个Markdown文档、3个JSON配置文件、2个Shell脚本文件、2个JPG图片文件、1个Git忽略文件...

    java远程进行telnet,ftp,ssh连接的方法及源代码.rar

    例如,你可以编写一个Java程序定期通过ssh登录服务器检查运行状态,通过ftp同步远程文件,或者通过telnet进行设备的简单控制。 总的来说,这个资源包为你提供了一个很好的起点,通过学习和理解这些代码,你将能够...

    Zabbix如何通过ssh监控获取网络设备数据

    在Zabbix中,我们可以创建一个SSH客户端类型的监控项,通过SSH连接到网络设备,执行特定的命令来获取所需信息。例如,如果我们想要监控光口的状态、利用率和电压,可以编写相应的命令来获取这些数据。 在Zabbix中...

    用电信息采集测试软件.zip

    用电信息采集测试软件是针对电力系统中用电信息监控与管理的一种专业工具,它主要用于测试和验证用电信息采集系统的功能和性能。这样的系统通常由客户端、服务端以及相关的辅助工具组成,以便实现对用户用电数据的...

    基于ssh的房地产信息管理系统毕业设计说明书.doc

    SSH(Secure Shell)是一种安全的远程登录协议,常用于远程登录服务器、上传下载文件、_tunneling 等应用场景。基于 SSH 的房地产信息管理系统是指使用 SSH 协议来实现房地产信息管理系统的安全远程登录、数据传输和...

    恩格尔设备采集异常 配置SSH 通道问题

    SSH是一种网络协议,用于在不安全的网络上提供加密通信,常用于远程登录和其他网络服务。 首先,我们要启动"E63 Configuration"工具,这个工具默认位于E63主服务器的桌面上。这是进行所有必要配置的起点。在配置...

    树莓派WiFi配置 ssh文件

    - **什么是SSH**:SSH是一种加密的网络协议,用于在网络中安全地执行命令和传输数据。在树莓派上,SSH允许你通过命令行界面远程控制树莓派。 - **默认情况**:树莓派的新系统通常默认启用SSH,但为了安全起见,...

    电信设备-一种实现批量获取整机柜服务器信息的方法.zip

    例如,利用IPMI(智能平台管理接口)可以获取硬件级别的信息,而SSH(安全外壳协议)则可远程执行命令获取软件信息。 3. **自动化脚本**:编写自动化脚本,如Python或bash,可以遍历所有服务器并执行查询命令,然后...

    电信设备-服务器信息的存储和提取方法及系统、提取装置.zip

    例如,通过SSH(Secure Shell)协议远程登录服务器进行命令行操作,获取系统状态;使用SNMP(Simple Network Management Protocol)进行网络设备管理,收集性能数据;利用API(Application Programming Interface)...

    服务器性能收集器

    3. **SSHService.java**:在Windows环境中,可能用于通过SSH(Secure Shell)协议连接到Linux服务器,从而收集远程服务器的性能数据。 实现性能收集通常需要以下步骤: 1. **连接服务器**:通过SSH或Windows的远程...

    linux下采用shell编程和ftp实现文件采集功能

    在Linux环境中,shell脚本是自动化任务的强大工具,可以用于执行一系列命令,包括文件的采集。FTP(File Transfer Protocol)则是一种广泛使用的网络协议,用于在不同计算机之间传输文件。结合shell编程和FTP,我们...

    电信设备-信息采集的方法、客户端及系统.zip

    客户端允许管理员远程访问设备,执行命令获取信息,或者配置自动化的数据收集任务。此外,客户端还可以集成各种API(应用程序接口)和SDK(软件开发工具包),以实现与设备的深度交互,获取更精细的数据。 系统层面...

    基于树莓派智能家居远程监控系统的设计与研究.pdf

    5. SSH反向隧道的搭建:通过SSH反向隧道技术,建立起一个稳定的、加密的通道,使得监控视频能够安全地穿越NAT设备,实现在任意地点的客户端上的实时监控。 本文的设计方案不仅考虑到了智能家居监控系统的实用性、...

    Python-CSDN爬虫远程服务器MySQL存储数据可视化

    7. **远程服务器**:数据存储在远程服务器上,意味着开发者可能使用了SSH协议远程访问服务器,或者使用云服务提供商(如AWS、阿里云等)的虚拟机。这涉及到远程文件传输、服务器配置和管理等相关知识。 8. **MySQL...

    Jmeter监控服务器性能插件.rar

    4. 在服务器上部署ServerAgent,通常通过SSH或远程桌面登录服务器,然后将ServerAgent-2.2.x的jar文件启动,配置监听端口和JMeter的IP地址。 使用PerfMon插件进行性能测试时,需在JMeter的测试计划中添加“jp@gc - ...

    基于SSH的电信数据采集与整合毕业论文.doc

    通过读取服务器日志文件采集数据然后整和到数据库中,供用户和管理员使用。其中持久层采用封装了 JDBC 的 Hibernate 框架,数据库采用 Mysql,利用 Struts 框架作为控制器,页面显示采用 JSP 技术,并且用 Spring ...

    Python-基于Redis与Paramiko的系统监控运维程序

    1. **数据采集**:使用Paramiko库连接到各个远程服务器,通过SSH执行命令(如`top`、`iostat`、`df -h`等)来获取系统状态信息。 2. **数据处理**:对收集到的数据进行解析和处理,提取出关键指标(如CPU负载、内存...

    基于SpringBoot+Bootstrap实现linux自动化运维监控系统,完美实现了分布式监控

    基于微服务springboot架构开发,是轻量高性能的分布式监控系统,核心采集指标包括:**cpu使用率,cpu温度,内存使用率,磁盘容量,磁盘IO,硬盘SMART健康状态,系统负载,连接数量,网卡流量,硬件系统信息等。...

Global site tag (gtag.js) - Google Analytics