'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
>>文件: 进程信息.py
>>作者: liu yang
>>邮箱: liuyang0001@outlook.com ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' #!/usr/bin/env python
# -*- coding: utf-8 -*- import sys,os
import psutil # http get/post
import requests
# 处理字符串
import json
# 获取系统时间
import time # 丁丁url
url = 'https://oapi.dingtalk.com/robot/send?access_token=3d94c740a27d5f70da6acf2a1c9383b338ad5c562fbaece8d38595c405e7e6a9'
# 转换成当前的时间戳
time_now = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
# 要监控的进程
monitor_name = {'ufw'}
# 要监控的进程,与shell语句对应,先定义为空
monitor_map={}
#要监控的服务名集合,{'ufw': 'service ufw start'}
for m in monitor_name:
monitor_map[m]='service '+m+' start' print(monitor_map) # print(time_now) # 显示进程,分别得到进程字典{'pid':'name'}和去重元祖()
def process_message():
# 进程字典,保存pid,进程名的键值对
proc_dict={}
# 进程列表,保存去重的进程名称
proc_list=set()
# psutil.Process(pid=4, name='System', started='2018-02-11 16:39:45')
for p in psutil.process_iter(attrs=['pid','name']):
proc_dict[p.info['pid']]=p.info['name']
proc_list.add(p.info['name'])
print(proc_list)
print(proc_dict) proc_stop = monitor_name - proc_list
#proc_stop:提取出来哪一个进程没有在当前操作系统下开启
if proc_stop:
#当前没有启动的这个进程集合不为空,有服务死掉了
for p in proc_stop:
print("正在重新启动%s"%p)
#取出每一个没有启动的服务名
p_status = '停止'
p_name = p
data = {
"msgtype": "markdown",
"markdown": {
"title":"监控讯息",
"text": "#### %s\n" % time_now +
"> ##### 服务名: %s \n\n" % p_name +
"> ##### 状态: %s \n" % p_status +
"> ##### 正在尝试启动"
}
}
headers = {'Content-Type':'application/json ; charset=UTF-8'}
send_data = json.dumps(data).encode('utf-8')
requests.post(url=url,data=send_data,headers=headers)
#post提交数据:提交的地址,提交的数据 if sys.platform.lower()=='linux':
os.system(monitor_map[p])
#函数不会给你返回值 proc_name = set() for p2 in psutil.process_iter(attrs=['pid','name']):
proc_name.add(p2.info['name'])
#操作系统下的所有进程名拿出来 if p in proc_name:
print("%s启动成功"%p)
p_status = '启动'
data = {
"msgtype": "markdown",
"markdown": {
"title":"监控讯息",
"text": "#### %s\n" % time_now +
"> ##### 服务名: %s \n\n" % p_name +
"> ##### 状态: %s \n" % p_status +
"> ##### 重启成功"
}
}
headers = {'Content-Type':'application/json ; charset=UTF-8'}
send_data = json.dumps(data).encode('utf-8')
requests.post(url=url,data=send_data,headers=headers)
else:
print("%s启动失败"%p)
p_status = '停止'
data = {
"msgtype": "markdown",
"markdown": {
"title":"监控讯息",
"text": "#### %s\n" % time_now +
"> ##### 服务名: %s \n\n" % p_name +
"> ##### 状态: %s \n" % p_status +
"> ##### 启动失败"
}
}
headers = {'Content-Type':'application/json ; charset=UTF-8'}
send_data = json.dumps(data).encode('utf-8')
requests.post(url=url,data=send_data,headers=headers)
time.sleep(2) if __name__ == '__main__': while True:
process_message()

[Python Study Notes]进程信息(丁丁软件监控进程,http-post)的更多相关文章

  1. [Python Study Notes]cpu信息

    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...

  2. [Python Study Notes]电池信息

    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...

  3. [Python Study Notes]内存信息

    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...

  4. [Python Study Notes]磁盘信息和IO性能

    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...

  5. Supervisor 管理进程,Cloud Insight 监控进程,完美!

    Supervisor 是由 Python 语言编写.基于 linux 操作系统的一款服务器管理工具,用于监控服务器的运行,发现问题能立即自动预警及自动重启等. Cloud Insight 是一款次世代 ...

  6. [Python Study Notes]psutil模块

    系统性能信息模块psutil psutil是一个跨平台库,能够轻松实现获取系统运行的进程和系统利用率(CPU,内存,磁盘,网络等)信息,主要应用于系统监控,分析和限制系统资源及进程的管理,它实现了同等 ...

  7. [Python Study Notes]CS架构远程访问获取信息--SERVER端v2.0

    更新内容: 1.增加内存信息获取 2.增加电池信息获取 3.增加磁盘信息获取 4.重新布局窗体 5.增加窗体名称 6.增加连接成功之前,不可按压 ''''''''''''''''''''''''''' ...

  8. [Python Study Notes]CS架构远程访问获取信息--Client端v2.0

    更新内容: 1.增加内存信息获取 2.增加电池信息获取 3.增加磁盘信息获取 4.重新布局窗体 5.增加窗体名称 6.增加连接成功之前,不可按压 效果图: '''''''''''''''''''''' ...

  9. [Python Study Notes]CS架构远程访问获取信息--SERVER端

    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...

随机推荐

  1. 最简Java程序

    本文是笔者创建项目--一系列java示例程序的总结.项目位置在SimplestJavaDemos,欢迎访问. 以下为正文: ---   作为一个伪完美主义+拖延癌患者,每次要学习新技术的时候,总是要把 ...

  2. 如何判断NSDictionary是否包含某个键

    方法一: if([[dictionary allKeys] containsObject:key){     // contains key} 方法二: if([dictionary objectFo ...

  3. linux 如何降低入向软中断占比

    最近遇到一个问题,当tcp收包的时候,我们的服务器的入向软中断比例很高. 我们知道,napi模式,可以降低收包入向软中断占比,那么,针对napi模式,能不能优化?本文针对2.6.32-358内核进行分 ...

  4. cpuimage 开源之

    前年学习opengl做的一个小东西. 原本计划将gpuimage 的算法一个一个转写成cpu版本 c,c++ 版本. gpuimage 项目参考: https://github.com/BradLar ...

  5. Spring简单的REST例子

    控制器处理 HTTP 的4个主要方法 GET,POST,PUT,DELETE 使用@PathVariable注解获取URL中的参数 import javax.inject.Inject; import ...

  6. 解决publish不编译问题

    突然发现上午写的博客没了,是我没保存吗?再写一遍 eclipse下将项目部署到tomcat,run之后页面访问出现404,看日志没异常,但出现了No mapping found for HTTP re ...

  7. jsp页面遍历List<Array>

    不难的遍历,难住了“前辈”,因此决定分享一下希望帮助那些还迷糊的人. 数据结构下如图所示,之前的前辈遍历方法如下,厉害哦!当然,代码直接抛异常哈, <c:if test="${!emp ...

  8. Tomcat服务器的Web安全的解决方法

    .概述 在任何一种WEB应用开发中,不论大中小规模的,每个开发者都会遇到一些需要保护程序数据的问题,涉及到用户的LOGIN ID和PASSWORD.那么如何执行验证方式更好呢?实际上,有很多方式来实现 ...

  9. ClearCase新增文件

    原文地址:http://blog.csdn.net/ace_fei/article/details/7531376 大家应该都知道在clearcase上新增文件是通过以下过程来生成的: clearto ...

  10. 如何更改wampserver的网站根目录

    我之前把网站根目录自定义为:D:/demo,现在想改为:D:www, 过程就是打开httpd.conf文件,搜索demo,然后把demo改为www,之后更改虚拟配置文件,记住D盘下一定要有www目录 ...