[Python Study Notes]进程信息(丁丁软件监控进程,http-post)
生活随笔
收集整理的這篇文章主要介紹了
[Python Study Notes]进程信息(丁丁软件监控进程,http-post)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
>>文件: 進程信息.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
# 獲取系統(tǒng)時間
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()))
# 要監(jiān)控的進程
monitor_name = {'ufw'}
# 要監(jiān)控的進程,與shell語句對應,先定義為空
monitor_map={}
#要監(jiān)控的服務名集合,{'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:提取出來哪一個進程沒有在當前操作系統(tǒng)下開啟if proc_stop:#當前沒有啟動的這個進程集合不為空,有服務死掉了for p in proc_stop:print("正在重新啟動%s"%p)#取出每一個沒有啟動的服務名p_status = '停止'p_name = pdata = {"msgtype": "markdown","markdown": {"title":"監(jiān)控訊息","text": "#### %s\n" % time_now +"> ##### 服務名: %s \n\n" % p_name +"> ##### 狀態(tài): %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提交數(shù)據(jù):提交的地址,提交的數(shù)據(jù)if sys.platform.lower()=='linux':os.system(monitor_map[p])#函數(shù)不會給你返回值proc_name = set()for p2 in psutil.process_iter(attrs=['pid','name']):proc_name.add(p2.info['name'])#操作系統(tǒng)下的所有進程名拿出來if p in proc_name:print("%s啟動成功"%p)p_status = '啟動'data = {"msgtype": "markdown","markdown": {"title":"監(jiān)控訊息","text": "#### %s\n" % time_now +"> ##### 服務名: %s \n\n" % p_name +"> ##### 狀態(tài): %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":"監(jiān)控訊息","text": "#### %s\n" % time_now +"> ##### 服務名: %s \n\n" % p_name +"> ##### 狀態(tài): %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()
轉載于:https://www.cnblogs.com/liu66blog/p/8450128.html
總結
以上是生活随笔為你收集整理的[Python Study Notes]进程信息(丁丁软件监控进程,http-post)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Kotlin之集合遍历
- 下一篇: C# 程序CPU占用率高调试方法