[Python Study Notes]进程信息(丁丁软件监控进程,http-post)
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
>>文件: 进程信息.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)的更多相关文章
- [Python Study Notes]cpu信息
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...
- [Python Study Notes]电池信息
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...
- [Python Study Notes]内存信息
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...
- [Python Study Notes]磁盘信息和IO性能
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...
- Supervisor 管理进程,Cloud Insight 监控进程,完美!
Supervisor 是由 Python 语言编写.基于 linux 操作系统的一款服务器管理工具,用于监控服务器的运行,发现问题能立即自动预警及自动重启等. Cloud Insight 是一款次世代 ...
- [Python Study Notes]psutil模块
系统性能信息模块psutil psutil是一个跨平台库,能够轻松实现获取系统运行的进程和系统利用率(CPU,内存,磁盘,网络等)信息,主要应用于系统监控,分析和限制系统资源及进程的管理,它实现了同等 ...
- [Python Study Notes]CS架构远程访问获取信息--SERVER端v2.0
更新内容: 1.增加内存信息获取 2.增加电池信息获取 3.增加磁盘信息获取 4.重新布局窗体 5.增加窗体名称 6.增加连接成功之前,不可按压 ''''''''''''''''''''''''''' ...
- [Python Study Notes]CS架构远程访问获取信息--Client端v2.0
更新内容: 1.增加内存信息获取 2.增加电池信息获取 3.增加磁盘信息获取 4.重新布局窗体 5.增加窗体名称 6.增加连接成功之前,不可按压 效果图: '''''''''''''''''''''' ...
- [Python Study Notes]CS架构远程访问获取信息--SERVER端
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...
随机推荐
- 关于jquery ajax跨域请求获取response headers问题
背景:最近项目jwt用户认证方式,关于jwt本人就不再赘述,大家可自行百度. jwt token基本流程是这样的: 用户使用用户名密码来请求服务器 服务器进行验证用户的信息 服务器通过验证发送给用户一 ...
- 读书笔记——《C++ Concurrency IN ACTION》
=================================版权声明================================= 版权声明:原创文章 禁止转载 请通过右侧公告中的“联系邮 ...
- java实现最小生成树的prim算法和kruskal算法
在边赋权图中,权值总和最小的生成树称为最小生成树.构造最小生成树有两种算法,分别是prim算法和kruskal算法.在边赋权图中,如下图所示: 在上述赋权图中,可以看到图的顶点编号和顶点之间邻接边的权 ...
- python简单词频统计
任务 简单统计一个小说中哪些个汉字出现的频率最高 知识点 文件操作 字典 排序 lambda 代码 import codecs import matplotlib.pyplot as plt from ...
- Linuxc - 执行c程序
1.新建工作空间 root@jiqing-virtual-machine:~/cspace/les1# pwd /root/cspace/les1 2.新建c程序 root@jiqing-virtua ...
- Linux Server release 7.3 更换阿里网络yum源
查看当前系统下的yum源 [root@localhost ~]# rpm -qa |grep yum yum-3.4.3-150.el7.noarch yum-utils-1.1.31-40.el7. ...
- 汇编编译器(masm.exe)对jmp的相关处理
body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...
- redis集群主从集群搭建、sentinel(哨兵集群)配置以及Jedis 哨兵模式简要配置
前端时间项目上为了提高平台性能,为应用添加了redis缓存,为了提高服务的可靠性,redis部署了高可用的主从缓存,主从切换使用的redis自带的sentinel集群.现在权作记录.
- Tomcat对Struts中的Action进行授权利
.应用的意义 在某些应用下,如果Action类执行的功能比较重要,可以对该Action类进行授权利以实现只有特定角色的用户能够访问,此时可以在struts-config.xml文件中进行配置 2. ...
- linkin大话面向对象--组合
继承是实现类重用的重要手段,但是它有一个最大的坏处:破坏封装.相比之下,组合也是实现类重用的重要方式,但是采用组合方式实现类重用则能提供更好的封装性.比如人有手一样,在人的类中增加一个手的属性. 何时 ...