利用kettle实现网页访问状态监控以及登录验证
一、思路总结
1、在钉钉中创建自定义机器人。
2、在kettle利用相应组件进行网页监控与登录验证。
3、通过邮件和钉钉机器人发布结果。
二、具体实现
(一)钉钉创建机器人
在钉钉群设置中找到智能群助手,然后选择添加机器人。
选择自定义(通过Webhook接入),安全设置选择加签,添加完之后可以查看到机器人的基本信息(其中的Webhook和密钥需要提取出来并保存后续步骤会用到)。
(二)利用kettle进行网页访问、登录验证并通过钉钉机器人反馈结果
1、由于钉钉机器人选择的安全设置为加签,需要将时间戳和签名值拼接到机器人IP后面来调用机器人。这里通过python代码实现这一步骤。
import time
import hmac
import hashlib
import base64
import urllib.parse
import os
import sys
import xlwt
#因为自定的机器人是采用的加签方式,所以通过下方代码获取时间戳和签名值。
timestamp = str(round(time.time() * 1000))
secret = '此处填之前保存的机器人密钥(SEC开头的一串字符)'
webhook = '此处填写之前保存的机器人的Webhook'
secret_enc = secret.encode('utf-8')
string_to_sign = '{}\n{}'.format(timestamp, secret)
string_to_sign_enc = string_to_sign.encode('utf-8')
hmac_code = hmac.new(secret_enc, string_to_sign_enc, digestmod=hashlib.sha256).digest()
sign = urllib.parse.quote_plus(base64.b64encode(hmac_code))
#对信息进行拼接
re = webhook + '×tamp=' + timestamp + '&sign=' + sign
#将钉钉机器人Webhook和时间戳、签名值拼接之后存放到excel表中,供后续转换使用。
workbook = xlwt.Workbook(encoding = 'utf-8')
worksheet = workbook.add_sheet('sheet1')
worksheet.write(0, 0, 'name')
worksheet.write(0, 1, 'values')
worksheet.write(1, 0, 'url_d')
worksheet.write(1, 1, re)
workbook.save('D:\ddreboot.xls')
2、读取上一步结果并定义其他需要的变量,然后通过组件实现目标。
excel输入:使用的excel输入组件,获取上一步python得到的数据。
定义需要的变量及变量值:使用javascript脚本组件。
检查web服务是否可用:查询——检查web服务是否可用,实现网页状态的监控。
过滤记录:对上一步结果进行过滤,网页不能访问则发邮件并通过钉钉机器人告知。可以访问则进行后续的登录验证。
登录验证:查询——REST client组件。
过滤登录结果:流程——过滤记录,登录结果通过钉钉机器人反馈。
钉钉机器人:查询——REST client组件(此处的body field格式科通过https://open.dingtalk.com/document/robots/message-types-and-data-format查看)。
发送邮件:应用——发送邮件。
(三)创建作业将python脚本和转换结合实现。
Start:通用——Start,此处可控制作业定时执行。
执行getsign.py脚本:脚本——shell。
转换:通用——转换。