服务器巡检shell脚本,python生成excel文档并邮件发出

背景及思路:

五一小长假之前,公司要求我做一次服务器巡检。

1、写了一个简单的脚本获取服务器的各种基础信息:cpu,内存,swap分区使用情况,磁盘,网卡信息种种,具体见脚本,将这些信息追加到一个文件中,然后在监控机上做一次汇总,汇总方式就不详谈,我用的是for循环ssh追加

2、然后利用python的xlsxwriter模块生成excel

3、最后利用python发带附件为excel的邮件到指定邮箱

获取服务器信息部分脚本:

#取所需要的内网IP
Int_ip=`ifconfig|awk ‘/inet addr/ {gsub(/:/," ");print $3}‘|egrep "^192.168.18"|head -1`
#取除该内网ip以及127.0.0.1之外的所有ip
Out_ip_list=`ifconfig|awk ‘/inet addr/ {gsub(/:/," ");print $3}‘|grep -v $Int_ip|grep -v 127.0.0.1`
#取内存总值,单位为G,四舍五入
Memory=`free -m|awk ‘/Mem/ {printf ("%.f\n",$2/1024)}‘`
#取内存fr
ee值,从系统角度看,取的是第一行的free
Memory_free=`free -m|awk ‘/Mem/ {printf "%.f\n",$4/1024}‘`
#取CPU核数
Cpu_num=`grep processor /proc/cpuinfo|wc -l`
#取服务器运行时间
Uptime=`uptime|awk ‘{print $3}‘`
#取最近15分的负载
Load=`uptime|awk ‘{print $12}‘`
#取磁盘大于80%的磁盘目录
Disk=`df -h|awk ‘{a=+$(NF-1);if(a>=80)print $NF}‘`
#swap分区总值,单位为G,四舍五入
Swap=`free -m|awk ‘/Swap/ {printf ("%.f\n",$2/1024)}‘`
#swap分区
Swap_free=`free -m|awk ‘/Swap/ {printf "%.f\n",$4/1024}‘`

生成excel
excel.py:
#!/usr/bin/python
# -*- coding: utf-8 -*-
from xlsxwriter import workbook
import ConfigParser
import time
import sendmail
def write_excel(file):
    ‘‘‘
    1、设置 Excel 样式
    2、将数据写入到 Excel 中
    ‘‘‘
    # 生成 Excel 文件
    work = workbook.Workbook(file)
    # 建立工作表,表名默认
    worksheet = work.add_worksheet()
    # 设置字体加粗、字体大小
    format_title = work.add_format({‘bold‘: True, ‘font_size‘: 16})
    # 设置水平对齐、垂直对齐
    format_title.set_align(‘center‘)
    format_title.set_align(‘vcenter‘)
    format_body = work.add_format({‘font_size‘: 14})
    # 设置样式,行高、列宽
    worksheet.set_row(0, 25)
    worksheet.set_column(0, 7, 30)
    worksheet.set_column(8,9,50)
    worksheet.set_column(9,10,100)
    # 定义表头
    title = (
        ‘服务器IP‘,
        ‘内存大小 GB‘,
        ‘内存剩余 GB‘,
        ‘Swap大小 GB‘,
        ‘Swap剩余 GB‘,
        ‘运行时间 天‘,
        ‘系统负载 ‘,
        ‘CPU 核数‘,
        ‘磁盘超过80%‘,
        ‘其余IP‘,
    )
    row = 0
    col = 0
    #写入表头
    for item in title:
        item = unicode(item,"utf-8")
        worksheet.write(row, col, item, format_title)
        col+=1
    #写入数据
    cf = ConfigParser.ConfigParser()
    cf.read(‘/data/scripts/excel/config_total.txt‘)
    for ip in cf.sections():
        row+=1
        col = 0
        for opt in cf.options(ip):
            key=cf.get(ip,opt)
            worksheet.write(row,col,key,format_body)
            col+=1
    work.close()
if __name__ == ‘__main__‘:
    Excel_name = "Server_%s.xls" %(time.strftime("%Y-%m-%d", time.localtime()))
    write_excel(Excel_name)
    sendmail.send_mail(‘********@139.com‘,‘服务器巡检表格‘,‘fuliao server message‘,Excel_name)

sendmail.py:

#!/usr/bin/python
import smtplib
from email.header import Header
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
import sys
mail_host = ‘smtp.163.com‘
mail_user = ‘163邮箱账号‘
mail_pass = ‘163邮箱密码‘
mail_postfix = ‘163.com‘
def send_mail(to_list,subject,content,name):
    me = mail_user+"<"+mail_user+"@"+mail_postfix+">"
    msg = MIMEMultipart()
    msg[‘Subject‘] = subject
    msg[‘From‘] = me
    msg[‘to‘] = to_list
    msg.attach(MIMEText(content))
    part = MIMEApplication(open(name,‘rb‘).read())
    part.add_header(‘Content-Disposition‘,‘attachment‘, filename=name)
    msg.attach(part)
    try:
        s = smtplib.SMTP()
        s.connect(mail_host)
        s.login(mail_user,mail_pass)
        s.sendmail(me,to_list,msg.as_string())
        s.close()
        return True
    except Exception,e:
        print str(e)
        return False

最后生成的excel图:

时间: 2024-10-29 19:11:51

服务器巡检shell脚本,python生成excel文档并邮件发出的相关文章

php用PHPExcel库生成Excel文档的例子

<?php require_once '../libs/PHPWord/PHPWord.php'; require_once '../libs/PHPWord/PHPWord/IOFactory.php'; require_once '../../config.php'; // New Word Document $PHPWord = new PHPWord(); $objExcel->getProperties()->setCreator("office 2003 excel

Python处理Excel文档(xlrd, xlwt, xlutils)

简介 xlrd,xlwt和xlutils是用Python处理Excel文档(*.xls)的高效率工具.其中,xlrd只能读取xls,xlwt只能新建xls(不可以修改),xlutils能将xlrd.Book转为xlwt.Workbook,从而得以在现有xls的基础上修改数据,并创建一个新的xls,实现修改. (以下属性或方法并非全部,需要更多属性请参看文档:建议先参考文末Demo,再深入了解) xlrd Book(class) 由xlrd.open_work("example.xls"

后台生成EXCEL文档,自定义列

后台生成EXCEL文档,自定义列 //response输出流处理 //设置编码.类型.文件名 getResponse().reset(); getResponse().setCharacterEncoding("utf-8"); getResponse().setContentType("application/vnd.ms-excel"); String useragent = getRequest().getHeader("user-agent&quo

java生成excel文档

要做一个后台自动化,要先预先生成一份文档,以下内容生成了文档 首先下载jxl.jar包,下载地址:http://download.csdn.net/detail/prstaxy/4469935 1.生成一个简单的excel文档 WritableWorkbook workbook = null; try { workbook = Workbook.createWorkbook(new File("F:\\test.xls")); //创建新的一页 WritableSheet sheet

利用xlrd模块实现Python读取Excel文档

# -*- coding: cp936 -*- #python读取excel import xlrd def main(): xls=xlrd.open_workbook("d:\\11.xls") try: mysheet=xls.sheet_by_name("Sheet1")#找到名为Sheet1的工作表.区分大小写 except: print("没有此工作表") return print("共有 %d 行, %d 列."

导出mysql数据,利用pandas生成excel文档,并发送邮件

首先得安装各种库.... 诸如mysql,pandas,numpy之类的了 我使用的pandas版本为pandas (0.16.2) 其中openpyxls版本为openpyxl (1.8.6) 其实到处mysql查询结果导出当然可以使用诸如sqllog,Navicat之类的客户端直接导出,简单快捷,下面的代码只是在需要定时并且以某种格式定期发送sql查询结果的环境下才存在的. 注:再者pandas当然还可以结合matplotlib生成漂亮的饼状图或者柱状图,只不过笔者暂时没有这个需求,所以没有

Python处理Excel文档之openpyxl

openpyxl 可以很好的处理 2010版本以上的表格. 示例: 1 #coding:utf8 2 ''' 3 Created on 2018年8月18日 4 5 @author: Administrator 6 ''' 7 from openpyxl import Workbook 8 import datetime 9 wb = Workbook() 10 11 # grab the active worksheet 12 ws = wb.active 13 14 # Data can b

python 3.7 生成数据库文档

开发阶段数据库总是有变动,开发人员需要维护文档给相关人员使用,故编写一个脚本自动生成数据库文档 生成的excel如下 import cx_Oracle import os from openpyxl import load_workbook from openpyxl import Workbook from openpyxl.styles import PatternFill os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8' ta

使用POI生成具有三级下拉菜单的Excel文档

曾在工作中遇到这种需求,研究很久编码出一个方法,提供于此供大家参考. 效果图如下: 开始贴代码,代码中部分测试数据不影响功能. 第一部分(核心处理): 此部分包含几个方面: 获取三级下拉框各列的数据: 创建每个下拉功能的名称管理器 在隐藏的sheet中生成下拉菜单所需要的row 代码如下: /** * 第一部分 * 将三个列表所有字段从数据库查询出,并生成名称管理器,存放至隐藏的sheet中 */ private static HSSFWorkbook writePorpData() { int