Delphi7 - Server Monitor开发并实现指定端口定时刷新、重启和邮件提醒等功能
项目背景
近期,总经办邮件反馈考勤数据频繁丢失,请IT排查其根本原因,并提供整改措施。
措不及防,这个项目当初并不是IT主导的,是设备部采购,然后协同软件供应商直接安装、部署和调试的,IT只是提供几个数据库表接口给供应商。然后我们就开始在设备、总经办、供应商之间相互扯皮,之所以扯皮的原因是,经过供应商排查并没有发现任何问题(具体情况不得而知),也就是说他们也不知道造成数据丢失的具体原因。
求人不如求己,后来我们这边排查数据库日志,发现在数据丢失的时间段内,数据库和上位机之间很少或者说基本没有数据交互。继续排查设备上位机日志,发现其网络端口会有间歇性响应异常等问题,重启端口后一切正常。
知道这些以后,那接下来问题就简单了。
解决方案
项目总目标
客制化一个系统/脚本,实现定时检测某个网络端口相关功能是否正常,通过其DLL接口实现端口刷新或重启,并将日志通过邮件方式发送给指定人员。
节点目标一:网络端口通断检测模块;
节点目标二:DLL接口重写,实现端口刷新或重启模块;
节点目标三:日志检测和邮件发送模块;
节点目标四:定时模块。
关键模块Demo
下面给出几个关键模块Demo
网络端口检测模块(需要引用IdIcmpClient单元)
- var
- icmp: TIdIcmpClient;
- rpss: TReplyStatus;
- begin
- icmp := TIdIcmpClient.Create(nil);
- try
- icmp.Host := strIP;
- icmp.ReceiveTimeout := intLinkTimeOut;
- try
- icmp.Ping;
- rpss := icmp.ReplyStatus;
- Result := not (rpss.ReplyStatusType = rsTimeOut);
- except
- Result := False;
- end;
- finally
- icmp.Free;
- end;
- end;
Dll接口模块
关于Dll接口其实没什么可说的,不同的接口使用方法不一样,这里给出通用的Dll接口重写和调用的例子
关于Delphi Dll接口重写:Delphi - 创建SuperDll 持续更新
关于Delphi Dll接口调用:Delphi - 调用SuperDll 持续更新
邮件发送模块
参考我以前写过的:Delphi - Indy TIdMessage和TIdSMTP实现邮件的发送
定时模块
采用Timer控件,通过前台设置执行间隔、Enable属性,来控制对关键事件的定时执行效果
测试Demo运行效果
页面布局
运行效果
作者:Jeremy.Wu
出处:https://www.cnblogs.com/jeremywucnblog/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
Delphi7 - Server Monitor开发并实现指定端口定时刷新、重启和邮件提醒等功能的更多相关文章
- Window IDEA开发工具 杀死指定端口 cmd 命令行 taskkill
Windows平台 两步方法 : 1 查询端口占用,2 强行杀死进程 netstat -aon|findstr "8080" taskkill /pid 4136-t -f ...
- Python-定时爬取指定城市天气(二)-邮件提醒
目录 一.概述 二.模块重新划分 三.优化定时任务 四.发送邮件 五.源代码 一.概述 上一篇文章python-定时爬取指定城市天气(一)-发送给关心的微信好友中我们讲述了怎么定时爬取城市天气,并发送 ...
- CentOS 5.5 防火墙开启、关闭以及开放指定端口
之前有讲过公司新买的服务器使用的是CentOS5.5, 部署好Tomcat之后却发现输入114.80.*.*:8080(即ip:8080)却无法显示Tomcat默认的首页. 因为以前部署在Win Se ...
- CentOS防火墙开启、关闭与开放指定端口
系统为centos 5.5,部署好Tomcat之后却发现输入114.80.*.*:8080(即ip:8080)却无法显示Tomcat默认的首页.由于以前部署在Win Server的VPS上,Linux ...
- windows下关闭指定端口服务,解决tomcat端口占用问题
http://blog.aizhet.com/Server/640.html 在windows下做java EE的开发时:搭建 Eclipse+tomcat的java web开发环境:在应用之中经常遇 ...
- Linux设置允许指定端口通过防火墙centos7
开启防火墙 1.systemctl start firewalld.service(开启防火墙) 2.systemctl stop firewalld.service(开启防火墙) 3.service ...
- scp命令需要指定端口时要紧跟在scp后
问题来源:我本地是Ubuntu操作系统,有时需要更新一些文件到服务器.但是,为了安全起见我们都是将服务器的sshd端口修改的,通常不使用默认的22号端口. 如果我们使用scp命令时:scp upl ...
- openssh安装、设置指定端口号、免密码登录、变量传递、防暴力破解
首先确保机器挂在好光盘镜像,然后查看软件包信息 [root@xuegod63 ~]# df -hFilesystem Size Used Avail Use% Mounted on/dev ...
- java 启动jar 指定端口
java 启动jar 指定端口 java -jar xxx.jar --server.port=80
随机推荐
- AD中如何插入logo(图片)
图片转成protel altium AD PCB封装 LOGO方法 1. 2. 3. 4.打开下列顺序文件夹 Examples-->Scripts-->Delphiscript Scrip ...
- 洛谷 pP2146 [NOI2015]软件包管理器
题目的传送门 题目描述 Linux用户和OSX用户一定对软件包管理器不会陌生.通过软件包管理器,你可以通过一行命令安装某一个软件包,然后软件包管理器会帮助你从软件源下载软件包,同时自动解决所有的依赖( ...
- hadoop2.9.0之前的版本yarn RM fairScheduler调度性能优化
对一般小公司来说 可能yarn调度能力足够了 但是对于大规模集群1000 or 2000+的话 yarn的调度性能捉襟见肘 恰好网上看到一篇很好的文章https://tech.meituan.com ...
- STL.h
最近老是被系统的一些STL卡到飞起,然后就手打了一个STL.h 库函数还没有打完,以后打新的还会再更,大家也可以使用,顺便帮我找一下bug,然后我再改进! template< typename ...
- js设置Date
function getDate (yyyy, MM, dd) { let t = new Date() t.setFullYear(yyyy) t.setMonth(Number(MM) - 1) ...
- 计划任务at和crontab
目标:会看,会写计划任务时间,会制定计划任务 一次性:at yum -y install at #安装at systemctl start atd #启动at服务 systemctl enable a ...
- js正则匹配的出链接地址
content为需要匹配的值 var b=/<a([\s]+|[\s]+[^<>]+[\s]+)href=(\"([^<>"\']*)\"| ...
- 怎么把CAT客户端的RootMessageId记录到每条日志中?
什么是RootMessageId? 为了理解RootMessageId先简单介绍一下CAT的数据结构设计.CAT客户端会将所有消息都封装为一个完整的消息树(MessageTree),消息树可能包括Tr ...
- Windows下编译最新版ChezScheme
据说ChezScheme是最快的神级编译器,一秒钟几百万行,王垠说的2秒内编译自身绝不是夸张(看这里<揭秘Chez Scheme>,Scheme中文社区).ChezScheme由美国印第安 ...
- Windows下mysql的下载和安装
下载: 1.下载地址:https://www.mysql.com/downloads/ 2.选择社区版:MySQL Community (GPL) Downloads » 3.MySQL Commun ...