定时监控服务端口是否正常 发送邮件

SAP系统自动发送邮件功能详解:如何用SCOT+SBWP实现定时邮件推送 本文详细解析了SAP系统如何实现自动邮件推送功能。通过SCOT事务码配置外部邮件服务器连接,并结合SBWP工作流与后台作业(SM36)设定定时任务,构建从环境准备、核心配置到监控排错的完整自动化邮件发送流程,有效提升企业信息流转效率。 阅读详情

定时监控服务端口是否正常 发送邮件

1.搭建简单maven web项目
2.写一个监听类 实现 接口ServletContextListener,实现其方法
如图:
这里写图片描述

3.具体的监控任务类ListennerTask
如图:
这里写图片描述

4.web.xml 中配置自己写好的监听
如图:
这里写图片描述


主要的代码我贴一下:
监听器

package com.eliteams.quick4j.web.listenner;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import java.util.Timer;

/**
 * Created by 18358 on 2016/11/21.
 */
public class RequestHospServerListenner implements ServletContextListener {
    private static final long LISTEN_TIME = 1*60*1000;//60秒

    @Override
    public void contextInitialized(ServletContextEvent servletContextEvent) {
        Timer timer = new Timer();
        // 具体监控任务实施类
        ListennerTask listennerTask = new ListennerTask();
        // 定时执行任务
        timer.schedule(listennerTask,0,LISTEN_TIME);
    }

    @Override
    public void contextDestroyed(ServletContextEvent servletContextEvent) {

    }
}

核心监控任务

package com.eliteams.quick4j.web.listenner;

import com.eliteams.quick4j.web.notifyauthor.EmailNotifyAuthor;
import com.eliteams.quick4j.web.notifyauthor.EmailUtil;
import com.eliteams.quick4j.web.notifyauthor.MailEntity;
import org.apache.commons.net.telnet.TelnetClient;

import java.io.IOException;
import java.net.Socket;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimerTask;

public class ListennerTask extends TimerTask{
    private static  final int SERVER_PORT = 8092;
    private static  final String SERVER_IP = "222.185.124.xx";
    private int count = -1;
    TelnetClient telnet ;
    @Override
    public void run() {
        count++;
        RequestHospServerListenner requestHospServerListenner = null;
        if (count > 0 ){
            telnet = new TelnetClient();
            try {
                telnet.connect(SERVER_IP,SERVER_PORT);
                System.out.println("时间:"+ timeConvent(System.currentTimeMillis()) +"请求开始执行,第"+ (count)+"次,服务端口正常开启");
            } catch (IOException e) {
                Date time = new Date();
                String msgtext = time + "\n" + SERVER_IP + ":" + SERVER_PORT + " is not reachable!";
                System.out.println("时间:"+ timeConvent(System.currentTimeMillis()) +"请求开始执行,第"+ (count)+"次,服务端口开启异常,"+msgtext);
                // 第1种发送邮件方法 (javax.mail)
                EmailNotifyAuthor notifyAuthor = new EmailNotifyAuthor();
                // 设置发送 接收 地址
                notifyAuthor.setAddress("zhanghlxxx@163.com","1835811xxx@163.com","监控——测试邮件");
                // 设置要发送附件的位置和标题
                notifyAuthor.setAffix("f:/123.txt", "123.txt");
                notifyAuthor.send("smtp.163.com","zhanghlxxx@163.com","longxxx");
                // 第2种发送邮件方法(commons.mail)
                MailEntity mail = new MailEntity("smtp.163.com","zhanghlxxx@163.com","1835811xxx@163.com","监控主机",
                        "zhanghlxxx@163.com","longxxx","服务异常","监控——测试邮件");
                new EmailUtil().send(mail);
            }

              requestHospServerListenner = new RequestHospServerListenner();
        }
    }

    public String timeConvent(long str){
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        long ltime = new Long(str);
        Date date = new Date(ltime);
        String s = simpleDateFormat.format(date);

        return s;
    }
}

*第一种方式: javax.mail 方式:

package com.eliteams.quick4j.web.notifyauthor;


import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;
import javax.activation.*;
import java.util.Properties;

/**
 * Created by 18358 on 2016/11/21.
 */
public class EmailNotifyAuthor {
    private String host = ""; // smtp服务器
    private String from = ""; // 发件人地址
    private String to = ""; // 收件人地址
    private String affix = ""; // 附件地址
    private String affixName = ""; // 附件名称
    private String user = ""; // 用户名
    private String pwd = ""; // 密码
    private String subject = ""; // 邮件标题
    public void setAddress(String from, String to, String subject) {
        this.from = from;
        this.to = to;
        this.subject = subject;
    }
    //添加附件信息
    public void setAffix(String affix, String affixName) {
        this.affix = affix;
        this.affixName = affixName;
    }
    public void send(String host, String user, String pwd) {
        this.host = host;
        this.user = user;
        this.pwd = pwd;

        Properties props = new Properties();

        // 设置发送邮件的邮件服务器的属性(这里使用网易的smtp服务器)
        props.put("mail.smtp.host", host);
        // 需要经过授权,也就是有户名和密码的校验,这样才能通过验证(一定要有这一条)
        props.put("mail.smtp.auth", "true");

        // 用刚刚设置好的props对象构建一个session
        Session session = Session.getDefaultInstance(props);

        // 有了这句便可以在发送邮件的过程中在console处显示过程信息,供调试使
        // 用(你可以在控制台(console)上看到发送邮件的过程)
        session.setDebug(true);

        // 用session为参数定义消息对象
        MimeMessage message = new MimeMessage(session);
        try {
            // 加载发件人地址
            message.setFrom(new InternetAddress(from));
            // 加载收件人地址
            message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
            // 加载标题
            message.setSubject(subject);

            // 向multipart对象中添加邮件的各个部分内容,包括文本内容和附件
            Multipart multipart = new MimeMultipart();

            // 设置邮件的文本内容
            BodyPart contentPart = new MimeBodyPart();
            contentPart.setText("邮件的具体内容在此");
            multipart.addBodyPart(contentPart);
            // 添加附件
            BodyPart messageBodyPart = new MimeBodyPart();
            DataSource source = new FileDataSource(affix);
            // 添加附件的内容
            messageBodyPart.setDataHandler(new DataHandler(source));
            // 添加附件的标题
            // 这里很重要,通过下面的Base64编码的转换可以保证你的中文附件标题名在发送时不会变成乱码
            sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();
            messageBodyPart.setFileName("=?GBK?B?" + enc.encode(affixName.getBytes()) + "?=");
            multipart.addBodyPart(messageBodyPart);

            // 将multipart对象放到message中
            message.setContent(multipart);
            // 保存邮件
            message.saveChanges();
            // 发送邮件
            Transport transport = session.getTransport("smtp");
            // 连接服务器的邮箱
            transport.connect(host, user, pwd);
            // 把邮件发送出去
            transport.sendMessage(message, message.getAllRecipients());
            transport.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

第二种方式 org.apache.commons.mail

package com.eliteams.quick4j.web.notifyauthor;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.HtmlEmail;
import org.apache.log4j.Logger;

/**
 * Created by 18358 on 2016/11/21.
 */
public class EmailUtil {
    protected final Logger logger = Logger.getLogger(getClass());
    public boolean send(MailEntity mail) {
        // 发送email
        HtmlEmail email = new HtmlEmail();
        try {
            // 这里是SMTP发送服务器的名字:163的如下:"smtp.163.com"
            email.setHostName(mail.getHost());
            // 字符编码集的设置
            email.setCharset(MailEntity.ENCODEING);
            // 收件人的邮箱
            email.addTo(mail.getReceiver());
            // 发送人的邮箱
            email.setFrom(mail.getSender(), mail.getName());
            // 如果需要认证信息的话,设置认证:用户名-密码。分别为发件人在邮件服务器上的注册名称和密码
            email.setAuthentication(mail.getUsername(), mail.getPassword());
            // 要发送的邮件主题
            email.setSubject(mail.getSubject());
            // 要发送的信息,由于使用了HtmlEmail,可以在邮件内容中使用HTML标签
            email.setMsg(mail.getMessage());
            // 发送
            email.send();
            if (logger.isDebugEnabled()) {
                logger.debug(mail.getSender() + " 发送邮件到 " + mail.getReceiver());
            }
            return true;
        } catch (EmailException e) {
            e.printStackTrace();
            logger.info(mail.getSender() + " 发送邮件到 " + mail.getReceiver() + " 失败");
            return false;
        }
    }
    }

MailEntity实体类

package com.eliteams.quick4j.web.notifyauthor;

import java.io.Serializable;

/**
 * Created by 18358 on 2016/11/21.
 */
public class MailEntity implements Serializable {

    public static final String ENCODEING = "UTF-8";

    private String host; // 服务器地址

    private String sender; // 发件人的邮箱

    private String receiver; // 收件人的邮箱

    private String name; // 发件人昵称

    private String username; // 账号

    private String password; // 密码

    private String subject; // 主题

    private String message; // 信息(支持HTML)

    public MailEntity() {
    }

    public MailEntity(String host, String sender, String receiver, String name, String username, String password, String subject, String message) {
        this.host = host;
        this.sender = sender;
        this.receiver = receiver;
        this.name = name;
        this.username = username;
        this.password = password;
        this.subject = subject;
        this.message = message;
    }

    public String getHost() {
        return host;
    }

    public void setHost(String host) {
        this.host = host;
    }

    public String getSender() {
        return sender;
    }

    public void setSender(String sender) {
        this.sender = sender;
    }

    public String getReceiver() {
        return receiver;
    }

    public void setReceiver(String receiver) {
        this.receiver = receiver;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getSubject() {
        return subject;
    }

    public void setSubject(String subject) {
        this.subject = subject;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }


}

依赖关系 补充一下:

     <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>mail</artifactId>
            <version>1.4</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-email</artifactId>
            <version>1.3.2</version>
        </dependency>

如果出现发送失败的情况 多数原因是 因为 邮箱设置问题,这里的邮箱密码是 授权码,可以到邮箱中设置。
附一张 结果图 和设置图
这里写图片描述

新手 。。学习中,不对的地方多担待,有好的方法可以提出来 大家一起学习!!!

用Kettle给泛微OA E9版邮件发送做自动化:定时任务与文件同步的完整配置流程 本文详细介绍了如何利用Kettle工具实现泛微OA E9版的邮件自动化发送,包括定时任务配置与文件同步方案。通过WebService接口调用和Kettle作业流设计,解决企业邮件通知的自动化需求,提升运维效率。特别适合需要定期发送报表和系统告警的团队。 阅读详情

相关推荐

可以发报警邮件的免费端口监视工具

可以发报警邮件的免费端口监视工具 This is a free server and network ports monitoring software for Windows system, Free Port Monitor can monitor many hosts port status at one time, can monitor and test all local network computers or remote hosts and servers, program can support many hosts in the same time.

自动监测接口变化并发送通知

之前有网友提出,想要用代码监控一个接口,定时访问它,如果接口返回值发生某些变化就提醒用户。于是,我写了个简单的脚本。脚本编写时,考虑的是放在目标网站的控制台来执行。之所以这样做,是因为如果放在页面外部执行,往往需要补环境,费时费力。

半吊子伯爵的博客 419

不用Root也能抓包?Android高版本HTTPS抓包的3种替代方案(含Charles技巧)

本文针对Android高版本HTTPS抓包难题,提供了三种无需Root权限的实战解决方案:利用VirtualXposed等虚拟沙盒环境、配置Postern等系统级代理工具,以及通过修改应用源码或网络安全配置。文章还详细解析了Charles抓包工具在非Root环境下的高级配置与排错技巧,帮助开发者在遵守安全规范的前提下,有效进行网络调试与监控。

http9protocoller的博客 648

开源服务器运维监控系统wgcloud-v3.2.6学习笔记

WGCLOUD下载地址:http://www.wgstart.com 一、系统简介 WGCLOUD基于java语言和go开发,是微服务架构的分布式监控系统,核心模块包括:主机监控,ES集群状态监控,CPU监控,内存监控,数据监控,服务心跳检测,应用进程管理,磁盘IO监控,系统负载监控,网络拓扑图,端口监控,日志文件监控,docker监控,监控告警信息(可集成微信钉钉短信等方式)推送。对标zabbix等监控工具,它更轻量,界面更友好,默认可支持500+主机监控,调优后可支持5000+主机监控。 文档的图

tianshiyeben的专栏 2677

多模态变体—ALIGN:高效的图像-文本学习

ALIGN 论文介绍了该模型的关键技术。无人工标注数据:使用互联网数据进行训练,不依赖人工清洗的数据集。高效的对比学习策略:采用大规模图像-文本配对数据,通过对比学习优化嵌入空间。支持零样本(zero-shot)学习:可以在没有专门训练的情况下执行多种任务,如分类、检索等。可扩展性强:ALIGN 采用高效的 CNN 或 Transformer 作为编码器,适用于大规模计算。

Azperk的博客 1220

基于carsim与Simulink联合仿真的车辆换道轨迹规划与轨迹跟踪模型

PID_反步控制_滑膜控制三种四旋翼无人机轨迹跟踪控制算法仿真 附带对应的说明文档,提供建模过程与仿真结果文献(英文)➕PPT 描述:采用的同一种参考轨迹,都是三维仿真 三种控制方法: [1]PID控制、[2]反步控制、[3]滑膜控制(三个仿真模型) 每个仿真均应用了同一种轨迹路径,直接运行即可出三维图,可以实现四旋翼无人机轨迹的跟踪

2501_90804007的博客 1085

学习笔记-0x01->linux监测服务器状态并使用mail发送邮件

一、任务需求 1.监控内容包括CPU使用率,内存使用率,根分区的磁盘占有率 2.百分比只需精确到个位,如7%,12%,23%等 3.定时监测,3分钟一次记录到log.txt日志文件 4.出现以下任意情况时告警:磁盘占有率超过90%,CPU使用率超过80%,内存使用率超过90%,告警邮件通过mail命令发送到指定邮箱 二、实现步骤 1.监测CPU、内存、根分区磁盘占有率 这里监测cpu使用mpstat命令,...

qq_53308402的博客 921

Windows 10 下 DockerToolbox 安装全攻略:从下载到配置阿里云镜像加速

本文详细介绍了在Windows 10系统上安装和配置DockerToolbox的完整流程。从下载安装包、执行初步安装,到关键步骤——修改虚拟机存储路径以及配置阿里云镜像加速器,旨在帮助开发者,尤其是初次接触Docker的新手,快速搭建高效的本地容器开发环境,并解决国内镜像下载缓慢的痛点。

moon9的博客 476

【小jar包】基于telnet的定时检测多个服务是否正常运行/邮件通知

基于telnet的轻量化定时检测公司各服务是否正常运行的java程序,异常/恢复时 系统利用邮件通知

个人笔记 1419

无监督学习初探:K-Means聚类与主成分分析(PCA)

K-Means适用于快速分组,但对数据分布敏感,可结合轮廓系数评估质量。PCA通过特征值分解实现线性降维,需注意非线性场景的替代方案(如UMAP)。进阶方向:聚类:谱聚类、高斯混合模型(GMM)处理复杂形状。降维:t-SNE、自编码器处理非线性结构。

weixin_69882801的博客 1454

别再只盯着meta包了!盘点R语言中7个元分析工具包的特色与适用场景

本文深入评测了R语言中7个主流元分析工具包(meta、metafor、netmeta、mada、mvmeta、metasens、rmeta)的核心功能与适用场景,帮助研究者根据具体需求精准选型。通过对比表格和实际代码示例,详细解析了各工具包在传统两两比较、网络Meta分析、诊断准确性研究等不同场景下的差异化优势,并提供了性能对比和组合使用建议。

weixin_30736301的博客 298

定时监控某个web端口服务是否有在运行。

公司一些通过resin来运行的web服务。因为自动重新启动或者某些原因导致服务没有正常启动。可以通过 nmap命令来检测此服务是否在运行。如检测8080端口: /usr/bin/nmap localhost |grep 8080再通过crontab计划定时运行该脚本, check_web.sh 内容: #!/bin/bash #check resin st

★ 分享、传播、open source 1106

(王道408考研数据结构)第八章排序-第一节:排序综述

文章目录一:排序一览二:简单插入排序(1)基本思想 一:排序一览 排序方法 类别 本文 时间复杂度 是否稳定 直接插入排序 插入排序 跳转 O(n2)O\left ( n^{2}\right )O(n2) 是 二叉树深度 简单 跳转 LeetCode 递归 翻转二叉树 简单 跳转 LeetCode 递归 相同的树 简单 跳转 LeetCode 递归 是否为子树 简单 跳转 LeetCode 递归 对称二叉树 简单 跳转 LeetCode 递归 平衡二叉树 简单 跳转

快乐江湖的博客 5493

定时监控所有服务器的端口,如果挂起,发送报警邮件

功能:1:ping所有网内机器的IP地址,如果不通,发送报警    2:检测网内所有机器的服务端口,如果不通,发送报警 #!/bin/bash ##读取IP列表,测试ip的某个端口## while read ip1do ping -c 2 $ip1 >> /dev/null 2>&1 if [ $? -eq 0 ]; then echo "****...

weixin_30722589的博客 324

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

linux测试其他服务端口,linux下自动检测服务端口是否正常监听。

脚本说明:1、检查服务器的各端口服务是否正常。2、服务端口如果没有正常监听,将自动重启该端口服务,记录日志,并发邮件通知管理员。3、让crontab每5分钟自动执行该脚本。4、脚本调用了sendEmail来发邮件,请自行谷歌百度装sendEmail。再次提醒是sendEmail 不是sendmail 。。。[root@node2 ~]# cat monitor.sh#!/bin/bash## d...

weixin_42560530的博客 314

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

基于两个项目 之间的RabbitMQ 发送和接收,并调用邮件接口,发送邮件

项目源码 下载 第一个项目:qucik4j 下载地址:https://github.com/ZhangHLong/quick4j 作用: 定时监控指定服务端口是否异常,发生异常,会发送MQ消息 通知email-server服务。第二个项目:email-server 下载地址:https://github.com/ZhangHLong/email-server

Java_HuiLong的博客 5688

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

linux下自动检测服务端口是否正常监听。

脚本说明:1、检查服务器的各端口服务是否正常。2、服务端口如果没有正常监听,将自动重启该端口服务,记录日志,并发邮件通知管理员。3、让crontab每5分钟自动执行该脚本。4、脚本调用了sendEmail来发邮件,请自行谷歌百度装sendEmail。再次提醒是sendEmail 不是sendmail 。。。[root@node2 ~]# ca...

weixin_34212189的博客 910

Linux通过SMTP发送邮件的脚本-20行代码(亲测可用)

✅通用性强:支持所有标准SMTP服务✅功能完整:支持TLS加密、HTML、附件等✅易于集成:可轻松嵌入各种自动化脚本✅配置灵活:支持多邮箱服务商✅稳定可靠:基于成熟的swaks工具无论是系统监控、定时任务报告还是业务通知,这个脚本都能完美胜任。希望这个SMTP版本的邮件脚本能够帮助大家提高运维效率!资源链接swaks官网SMTP端口大全如有问题欢迎在评论区交流讨论!

tomcsdn25的博客 1045

python通过端口连接和邮件发送实现简单的自动运维(一)

由于平时项目较多,每天要查看的服务进程比较多,后来就想通过python定时轮询端口,查看服务进程是不是还在,然后通过邮件发送出来,这样减少工作量。实现的方式是linux服务器(linux自带python)通过socket的模块判断端口连接是否被占用,最后通过smtplib模块及email.mime.text模块完成邮件发送。

司马沉潇的专栏 547

邮件日志分析工具pflogsumm

From:http://blog.dspam.org.cn/post-43.html 1、pflogsumm功能: 统计接收、投递、转发、延时、反弹、拒绝、保留、丢弃的邮件 统计发件人和收件人  统计发送和接受方主机/域名  统计SMTPD连接数 。。。。。。 2、安装 # yum install postfix-pflogsumm 3、使用 统计今天的信息 #

Robert's Log 3090

linux监控服务存活shell脚本,案例五:shell脚本实现定时监控http服务的运行状态...

注意:监控方法可以为端口、进程、URL模拟访问方式,或者三种方法综合。说明:由于截止到目前仅讲了if语句,因此,就请大家用if语句来实现。[root@oldboy-Bscripts]#catapachemon#!/bin/sh#createdbyoldboy20110523./etc/init.d/functionsHTTPPRONUM=`ps-ef|grephttp|grep...

weixin_34828613的博客 331

阿里云环境迁移记录 - 服务监控及报警

服务监控的方案有很多,譬如naigos,zabbix这种,不但可以监控服务,还可以监控cpu、内存、磁盘、网络流量、服务端口等,关于naigos和zabbix的搭建配置,需要另外篇幅介绍,这里使用服务器自身的定时任务+脚本+邮件功能完成一个简单的监控。 Part1 邮件服务搭建 安装mailx yum -y install mailx ##############################q...

weixin_33841722的博客 545

Shell脚本之linux服务器磁盘利用率监控

脚本主要设计思路是通过ssh免密远程登录待巡检主机,并执行df -h命令。通过awk命令过滤中磁盘利用率列值并与阈值进行比较,超过阈值的值记录下来。配置定时任务执行脚本,将巡检结果邮件告知。

月生的静心苑 3445

Linux-服务监控的搭建

监控服务 监控是什么?监控的重要性是什么?为什么要做监控?需要监控什么? 从应用层来角度来看: 你公司业务的WEB 服务器拒绝连接了? 客户无法给你们的邮箱发邮件了? 论坛的大量用户无法登陆? DNS 无法正常解析? 数据库服务器宕机了,用户无法写入数据了? ... 从服务器、应用和网络设备的角度来看: 目前服务器的CPU 负载多少,一天中那个时刻负载高,一个月中哪一天服务器CPU 的...

谷子的博客 4574
上一篇: Duplicate spring bean id “XXXXX”
下一篇: 直接new 对象 Spring 不会注入的解决方法
Java_HuiLong
博客等级 码龄11年 26粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值