钉钉监控服务

匿名 (未验证) 提交于 2019-12-03 00:02:01
import requestsimport osimport timeimport jsonimport psutilimport socketwhile True:    # 获取本机计算机名称    hostname = socket.gethostname()    # 获取本机ip    ip = socket.gethostbyname(hostname)    time_now = time.strftime('%Y-%m-%d %H:%M:%S')    url = 'https://oapi.dingtalk.com/robot/send?access_token=91a38bc1a6afc21b23bf450a058baa9baa6d3beb7fcad1b431db18c97c258ce4'    def process():        proc_dict = {}        proc_name = set()        # 要监控服务集合        monitor_name = {'httpd'}        # 要监控的服务        server={'httpd':'systemctl start httpd'}        for p in psutil.process_iter(attrs=['pid','name']):            # psutil.process_iter:返回操作系统洗的全部进程名称和ID            proc_dict[p.info['pid']]=p.info['name']            proc_name.add(p.info['name'])        proc_stop = monitor_name - proc_name        '''>> > a = {'1'}    >> > b = {'2', '3', '4'}    >> > a - b    {'1'}    要监控服务-系统服务=死掉的'''        if proc_stop:            for p1 in proc_stop:                p_status = '停止'                data = {"msgtype": "text","text": {"content": "主机ip:%s\n服务:%s\n状态:%s\n%s" % (ip,p1, p_status,time_now)},"at": {"atMobiles": [],"isAtAll": False}}                headers = {"Content-Type": "application/json", "Chartset": "utf-8"}                # 把json转变为字符串格式数据                send_data = json.dumps(data)                # 这个是发送post请求,请求钉钉接口                response = requests.post(url=url, headers=headers, data=send_data)                # 讲求成功后返回的数据                content = response.content.decode()                os.system(server[p1])                proc_a = set()                for i in psutil.process_iter(attrs=['pid','name']):                    proc_a.add(i.info['name'])                if p1 in proc_a:                    p_status = '启动'                    data = {"msgtype": "text", "text": {"content": "主机ip:%s\n服务:%s\n状态:%s\n%s" % (ip, p1, p_status, time_now)},"at": {"atMobiles": [], "isAtAll": False}}                    send_data = json.dumps(data)                    response = requests.post(url=url, headers=headers, data=send_data)                    content = response.content.decode()                else:                    p_status = '停止'                    data = {  # 此消息的类型为固定的text                        "msgtype": "text", "text": {  # 消息内容                            "content": "主机ip:%s\n服务:%s\n状态:%s\n%s" % (ip, p1, p_status, time_now)},                        "at": {  # 被@人手机号                            "atMobiles": [], "isAtAll": False}}                    send_data = json.dumps(data)                    response = requests.post(url=url, headers=headers, data=send_data)                    content = response.content.decode()    time.sleep(5)    process()
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!