sun_q
4/19/2018 - 7:18 AM

create html

获取到数据后创建html的脚本

#/usr/bin/python
#-*- coding:utf-8 -*-

import time

class CreateHtml(object):
    def __init__(self, data):
        self.data = data



    def htmltitle(self):
        data = '''
        <html>
        <head>
            <title>document</title>
            <style type="text/css">
                table{
                    margin: 50px auto;
                }
            </style>
        </head>
        <body>'''
        return data

    def tablehead(self):
        return '<table border="1" cellspacing="0" cellpadding="10%" style="text-align:center;">'


    def tabletitle(self, title_s):
        return '<caption style="color: darkgreen;font-size: 22px;"> %s </caption>' % title_s

    def tableend(self):
        return '</table>'

    def htmlend(self):
        return '''</body></html>'''

    def webtitle(self):
        data = '''
            <tr>
                <th>id</th>
                <th>主机名</th>
                <th>ip</th>
                <th>时间</th>
                <th>CPU负载</th>
                <th>CPU使用率</th>
                <th>内存使用率</th>
                <th>磁盘空间使用率</th>
                <th>网卡流量 rx/kB</th>
                <th>网卡流量 tx/kB</th>
            </tr>'''

        '''
        <th>响应时间</th>
                <th>访问量</th>
                <th>成功请求数</th>
                <th>失败请求数</th>'''

        return data

    def webtablebody(self):
        t_body = []
        if len(self.data) == 0:
            return ''
        for i in range(1,len(self.data) + 1):
            data_t = '''
                    <tr>
                        <td rowspan="%s">%s</td>
                        <td rowspan="%s">%s</td>
                        <td rowspan="%s">%s</td>
                        ''' % (len(self.data[i]['data']),i,
                               len(self.data[i]['data']),
                                self.data[i]['hostname'],
                                len(self.data[i]['data']),
                                self.data[i]['ip'])
            t_body.append(data_t)
            num = 0
            for k in sorted(self.data[i]['data'].keys()):
                v = self.data[i]['data'][k]
                num += 1
                data_b = '''
                    <td>%s:00:00</td>
                    <td>%s</td>
                    <td>%s</td>
                    <td>%s</td>
                    <td>%s</td>
                    <td>%s</td>
                     <td>%s</td>
                </tr><tr>''' % (k[:2], v['cpu_load'], v['cpu'], v['mem'], v['disk'],
                            v['net']['rx'],v['net']['tx'])
                if num == len(self.data[i]['data']):
                    data_b = data_b[:-4]

                t_body.append(data_b)
        return '\n'.join(t_body)


    def dubbotitle(self):
        data = '''
                    <tr>
                        <th>id</th>
                        <th>主机名</th>
                        <th>ip</th>
                        <th>时间</th>
                        <th>CPU负载</th>
                        <th>CPU使用率</th>
                        <th>内存使用率</th>
                        <th>磁盘空间使用率</th>
                        <th>网卡流量 rx/kB</th>
                        <th>网卡流量 tx/kB</th>
                        <th>已建立连接数</th>
                        <th>Time Wait数</th>
                        <th>应用运行端口</th>
                        <th>应用运行时间</th>
                        <th>应用运行用户</th>
                        <th>集群状态</th>
                    </tr>'''
        return data


    def dubbotablebody(self):
        t_body = []
        if len(self.data) == 0:
            return ''
        for i in range(1,len(self.data) + 1):
            data_t = '''
                            <tr>
                                <td rowspan="%s">%s</td>
                                <td rowspan="%s">%s</td>
                                <td rowspan="%s">%s</td>
                                ''' % (len(self.data[i]['data']),i,
                                       len(self.data[i]['data']),
                                       self.data[i]['hostname'],
                                       len(self.data[i]['data']),
                                       self.data[i]['ip'])
            t_body.append(data_t)
            num = 0
            for k in sorted(self.data[i]['data'].keys()):
                v = self.data[i]['data'][k]
                num += 1
                data_b = '''
                            <td>%s:00:00</td>
                            <td>%s</td>
                            <td>%s</td>
                            <td>%s</td>
                            <td>%s</td>
                            <td>%s</td>
                            <td>%s</td>
                            <td>%s</td>
                            <td>%s</td>
                            <td>%s</td>
                            <td>%s</td>
                            <td>%s</td>
                            <td>%s</td>
                        </tr><tr>''' % (k[:2], v['cpu_load'], v['cpu'], v['mem'], v['disk'],
                                        v['net']['rx'],v['net']['tx'], v['conn'],v['timewait'],v['process']['port'], v['process']['rtime'],
                                        v['process']['user'],v['process']['status'])
                if num == len(self.data[i]['data']):
                    data_b = data_b[:-4]
                t_body.append(data_b)
        return '\n'.join(t_body)


    def T_now(self):
        return time.strftime('%Y-%m-%d', time.localtime(time.time()))


    def webtable(self):
        if len(self.data) == 0:
            return ''
        table_title = self.tabletitle('web服务系统信息汇总 %s' % self.T_now())
        html = '''
            %s
            %s
            %s
            %s
            %s
            ''' % ( self.tablehead(),
                   table_title, self.webtitle(),
                   self.webtablebody(),self.tableend())
        return html

    def dubbotable(self):
        if len(self.data) == 0:
            return ''
        table_title = self.tabletitle('dubbo服务系统信息  %s' % self.T_now())
        html = '''
            %s
            %s
            %s
            %s
            %s
            ''' % (self.tablehead(),
                     table_title, self.dubbotitle(),
                     self.dubbotablebody(), self.tableend())
        return html