#!/usr/local/bin/python
#coding:utf-8
import socket
import smtplib
import urllib
import os
import sys
import time
from email.mime.text import mimetext
#email options
mail_options = {
'mail_host':'smtp.xxx.com',
'mail_user':'xxx@xxx.com',
'mail_pass':'xxxxxx',
'mail_postfix':'xxx.com',
'mail_tolist':['xxx@xxx.com'],
}
#server url
host_url = xxxxxx
#check nginx server status
def check_nginx():
for i in range(3):
time.sleep(3)
try:
result = os.popen('ps -c nginx -o pid,cmd').readlines()
if len(result) print nginx process killed, restarting service in 3 seconds.
time.sleep(3)
os.system('/usr/local/nginx/sbin/nginx')
else:
break;
except:
print error!
#check server status
def url_request(url):
try:
response = urllib.urlopen(url);
response_code = response.getcode()
if 500 == response_code:
return response_code
elif 501 == response_code:
return response_code
elif 502 == response_code:
return response_code
elif 503 == response_code:
return response_code
elif 504 == response_code:
return response_code
else:
return true
except ioerror,e:
return false
#restart cas service
def cas_restart():
try:
print cas restarting service in 3 seconds.
time.sleep(3)
os.system('xxx')
return true
except:
print error
return false
#send email
def send_mail(mail,sub,content):
me=server monitor+
msg = mimetext(content,_subtype='plain')
msg['subject'] = sub
msg['from'] = me
msg['to'] = ;.join(mail['mail_tolist'])
try:
server = smtplib.smtp()
server.connect(mail['mail_host'])
server.login(mail['mail_user'],mail['mail_pass'])
server.sendmail(me, mail['mail_tolist'], msg.as_string())
server.close()
return true
except exception, e:
print str(e)
return false
if __name__=='__main__':
check_nginx()
status = url_request(host_url)
if status is not true and status is not none:
restart_result = cas_restart()
if restart_result is true:
content = server:%s was died! status code:%s.\r\nthe service restarts successfully.%(host_url, status)
send_mail(mail_options, monitor, content)
else:
content = server:%s was died! status code:%s.\r\nthe service failed to restart, please restart the service again.%(host_url, status)
send_mail(mail_options, monitor, content)
else:
pass
以上就介绍了python脚本监控nginx服务,包括了方面的内容,希望对php教程有兴趣的朋友有所帮助。