[Python Study Notes]進程信息(丁丁軟件監控進程,http-post)
阿新 • • 發佈:2018-02-16
type markdown shell mes json itl con usr 重新啟動
‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘ >>文件: 進程信息.py >>作者: liu yang >>郵箱: [email protected] ‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘ #!/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)