"" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "", "" "". "" "" "" "" "" "" "" "," "" "" "," "" "" "," "" "," "" ">> Process Information .py>> Author: Liu Yang>> e-mail: [email protected] "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "." "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "#!/usr/bin/env python#-*-coding:utf-8-*-import sys,osimport psutil # http Get/postimport requests# processing string import json# Get system time import time# tintin urlurl = ' Https://oapi.dingtalk.com/robot/send? Access_token=3d94c740a27d5f70da6acf2a1c9383b338ad5c562fbaece8d38595c405e7e6a9 ' # converted to the current timestamp Time_now = Time.strftime ('%y-%m-%d%h:%m:%s ', Time.localtime (Time.time ()) # process to monitor monitor_name = {' UFW '}# the process to be monitored, corresponding to the shell statement, defined as empty Monitor_map ={} #要监控的服务名集合, {' UFW ': ' Service UFW start '}for m in monitor_name:monitor_map[m]= ' service ' +m+ ' Start ' Print (Monitor_map) # print (time_now) # show process, respectively get process dictionary {' PID ': ' Name '} and de-Ganso () def process_message (): # process dictionary, save PID, key value of process name to proc_dict={} # into To save the process name 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: Extract which process does not open if proc_stop under the current operating system: #当前没有启动的这个进程集合不为空, a service has died for P in Proc_stop : Print ("restarting%s"%p) #取出每一个没有启动的服务名 p_status = ' Stop ' p_name = P dat A = {"Msgtype": "Markdown", "markdown": {"title": "Monitoring Message", "Te XT ":" # # # #%s\n "% time_now +" > ##### service Name:%s \ n "% p_name +" > ##### status:%s \ n " % p_status + "> ##### trying to Start"}} headers = {' Content-type ': ' Appl Ication/json; Charset=utf-8 '} send_data = Json.dumps (data). Encode (' Utf-8 ') requests.post (url=url,data=send_data,he Aders=heaDERs) #post提交数据: Submitted address, submitted data 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:prin T ("%s started successfully"%p) P_status = ' start ' data = {"Msgtype": "Markdown", "Markdown": {"title": "Monitor Message", "text": "# #%s\n"% time_now + "> ##### service Name:%s \ n"% p_name + "> ##### status:%s \ n"% p_status + "& Gt ##### reboot Successful "}} headers = {' Content-type ': ' Application/json; charset=ut F-8 '} send_data = Json.dumps (data). Encode (' Utf-8 ') requests.post (url=url,data=send_data,head Ers=headers) Else:print ("%s failed to start"%p) P_status = ' Stop ' data = {' MSgt Ype ":" Markdown "," markdown ": {" title ":" Monitoring Message "," text ":" # # # #%s\ N "% time_now +" > ##### service Name:%s \ n "% p_name +" > ##### status:%s \ n "% P_st ATUs + "> ##### start Failed"}} headers = {' Content-typ E ': ' 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] Process information (Tintin software monitoring process, http-post)