定时PING指定主机并将结果通过钉钉推送给管理员

需求:定时PING指定的IP,PING不通时向管理员钉钉发送一个消息。本例中使用的数据库是Oracle。

大致原理:编写一个Windows批处理用PING命令测试指定IP是否能通。如果不能PING通,就插入一条记录到数据库的easysqlmail_wx_intf表中,让EasySQLMAIL将消息通过钉钉或是企业微信发送给管理员。

实现方法:

1、启用EasySQLMAIL的数据源上的“外部接口”,选择“外部接口”中的“允许从该数据源上的接口表中发送企业微信或钉钉消息”选项,并记下所选应用的“应用ID”:

启用数据源的外部接口功能后,EasySQLMAIL会自动在数据源上创建接口表easysqmail_wx_intf。

2、编写SQL脚本,用于插入一条记录到EasySQLMAIL的接口表中:

INSERT INTO easysqlmail_wx_intf(wx_app_id,to_user,content)
VALUES(18,'nanfangfeizhu',to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') || ':对192.168.1.199的PING测试未通,请关注');

EXIT;

将这个sql语句保存到ping-test.sql中。其中,18是要调用来发送消息的应用ID,在第一步选择发送消息的应用时可以看到。"nanfangfeizhu"这里改成您的钉钉帐号。钉钉帐号可以在EasySQLMAIL的“钉钉消息通道配置”->"管理应用列表和企业成员"中查询到:

3、编写批处理文件:

@ECHO OFF
SET IP=192.168.1.199
ping -n 1 %IP% | find "TTL="
if %ERRORLEVEL% EQU 0 goto SUCCEED

ECHO PING不通
REM 这里调用sqlplus.exe执行一个SQL向数据库的easysqlmal_wx_intf接口表中插一条记录,通知EasySQLMAIL发一条消息出去
sqlplus.exe 数据库用户名/数据库密码@数据库TNS @ping-test.sql>>ping-test.log

GOTO END

:SUCCEED
ECHO PING通了

:END

将这段批处理代码保存到ping-test.bat中。并将ping-test.sql与ping-test.bat放在同一个目录中。

4、在Windows的计划任务中添加一个任务,定时运行ping-test.bat:

这样设置完成后,系统每隔一段时间运行一次ping-test.bat,当ping出现问题时,调用sqlplus执行ping-test.sql中的语句插入一条记录到数据库的easysqlmail_wx_intf接口表中,EasySQLMAIL会定时读取这个接口表中的数据,并把消息通过钉钉推送给指定的员工。

此方法也可以推送电子邮件、企业微信消息。具体方法可以按EasySQLMAIL官网的相关文档来做。

下面是一些有用的资料:

EasySQLMAIL系统操作手册->外部接口功能 http://www.easysqlmail.com/manual/index.html?page=extintf.htm

SQL语句中发送微信消息 https://www.cnblogs.com/flyingpigacc/p/10962327.html

猜你喜欢

转载自www.cnblogs.com/flyingpigacc/p/12506412.html