内网环境如何使用JAVA做自动化监控-模拟人工操作

2019-12-31  本文已影响0人  江朝技术

作者所在的项目是与运营商合作的,多数情况下,生产环境的服务器都是部署在内网,这让监控变得非常困难,内网的访问限制控制非常严格,很多时间都需要使用VPN才能远程接入,那么在这种情况下,自动化监控变得非常的遥不可及。
大家试想一下,在这样的场景下如何监控内网的业务呢?目前我想的的方案主要有如下几个
1.开通一个监控端口给外网,同时在内网部署一个监控服务,通过这个端口把数据发到邮箱或者接入中心监控平台。
2.如果条件不允许开通任何端口到外网,可以使用程序模拟登陆VPN,点击浏览器,去抓图或者去查询数据库的数据
3.其它方案

今天我将介绍第二种方案,先上代码:

import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.image.BufferedImage;
import java.io.File;
import java.util.Date;

public class ScreenAction {
    /**
     * 刷新并且保存截图
     *
     * @param filePath 文件路径
     * @param fileName 文件名称
     * @throws Exception
     */
    public static void reFrshAndcaptureScreen(String filePath, String fileName) throws Exception {
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        Rectangle screenRectangle = new Rectangle(screenSize);
        Robot robot = new Robot();
        robot.keyPress(KeyEvent.VK_F5);
        BufferedImage image = robot.createScreenCapture(screenRectangle);
        //保存路径
        File screenFile = new File(filePath);
        if (!screenFile.exists()) {
            screenFile.mkdir();
        }
        File f = new File(screenFile, fileName);
        ImageIO.write(image, "png", f);

        //自动打开
//        if (Desktop.isDesktopSupported()
//                && Desktop.getDesktop().isSupported(Desktop.Action.OPEN)){
//            Desktop.getDesktop().open(f);
//        }
    }

    public static void main(String[] args) {
        try {
            int i = 5;
            for (int i1 = 0; i1 < i; i1++) {
                reFrshAndcaptureScreen("d:\\你好", DateUtil.format(new Date(), DatePattern.PURE_DATETIME_PATTERN) + ".PNG");
                Thread.sleep(2000);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

注意pom.xlm里要引入hutool工具类:

 <dependency>
        <groupId>cn.hutool</groupId>
        <artifactId>hutool-all</artifactId>
        <version>4.4.3</version>
</dependency>

Robot 还可以模拟鼠标的移动与点击,大家可以自行尝试一下,方法就是定位到桌面的软件位置坐标,调用鼠标点击函数就可以实现。
robot.mouseMove();
robot.mousePress();
实现的思路是先定位到软件的位置mouseMove,然后调用mousePress
最后再调用屏幕截图,使用邮件API把相关的截图通过邮件发送到管理员邮箱就可以实现监控啦。

上一篇下一篇

猜你喜欢

热点阅读