Skip to content

Instantly share code, notes, and snippets.

@iOS0x00
Created September 1, 2014 08:11
Show Gist options
  • Save iOS0x00/a76ac3aceabe56e290ac to your computer and use it in GitHub Desktop.
Save iOS0x00/a76ac3aceabe56e290ac to your computer and use it in GitHub Desktop.
获取Apache状态页面的数据
#!/bin/env python
# Author: Neil <neil@neildd.com>
# Date: 1-24-2013
# Desc: Read information from Apache status page
import re
import urllib2
class pyApacheStatus:
def __init__(self, apache_host):
self.apache_host = apache_host
self.d = {}
def get_data(self):
return self.d
def loadPage(self):
url = 'http://%s/server-status' % self.apache_host
page_fp = urllib2.urlopen( url )
data = page_fp.read()
page_fp.close()
return data
def parseData(self, data):
server_version = re.findall(r"<dt>Server Version:(.*?)</dt>", data, re.S)
if server_version:
server_version = server_version[0]
else:
server_version = 'n/a'
self.d['server_version'] = server_version
server_build = re.findall(r"Server Built:(.*?)</dt>", data, re.S)
if server_build:
server_build = server_build[0]
#TODO trans to timestamp
else:
server_build = 'n/a'
self.d['server_build'] = server_build
total_access = re.findall(r"<dt>Total accesses:(.*?)- Total Traffic:(.*?)</dt>", data, re.S)
if total_access:
total = total_access[0]
total_access = int( total[0] )
#TODO trans to KB format
total_traffic = total[1]
else:
total_access = 0
total_traffic = 0
self.d['total_access'] = total_access
self.d['total_traffic'] = total_traffic
request_speed = re.findall(r"<dt>CPU Usage:(.*?)<dt>(.*?)requests/sec -(.*?)B/second -(.*?)/request</dt>", data, re.S)
if request_speed:
request_speed = request_speed[0]
#TODO data format
request_persec = request_speed[1]
data_persec = request_speed[2]
data_perreq = request_speed[3]
else:
request_persec = 0
data_perreq = 0
data_persec = 0
self.d['request_persec'] = request_persec
self.d['data_perreq'] = data_perreq
self.d['data_persec'] = data_persec
if __name__ == '__main__':
pa = pyApacheStatus('localhost')
pa.parseData( pa.loadPage() )
print pa.d
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment