python重构日志监控脚本的程序代码

先看代码:

nginx日志监控脚本Python

#!/usr/bin/python2.6
#coding=utf-8
import os
import time
#日志记录
num_file = '/data/www/www.111cn.net/log/num'
log_file = '/data/www/www.111cn.net/log/www.111cn.net.log'
#ip屏蔽函数
def shellcmd(ip,con):
    os.system('/root/shell/nginx/editblocksip.sh add '+ip)
    os.system('echo '+con+' | mail -s "log info" zhangcunchao_cn@163.com')                                                                                                        
 
nowfile = os.getcwd()+"/"+__file__
stime = os.stat(nowfile).st_mtime
#修改时间变化退出
while stime == os.stat(nowfile).st_mtime:
    log_num = str(int(os.popen("cat "+num_file).read()))
    real_num = str(int(os.popen("cat "+log_file+" | wc -l").read()))
    if log_num != real_num:
        #插入新记录条数
        os.system('echo '+real_num+' > '+num_file)
        content =  os.popen("tail -n +"+log_num+" "+log_file).read().split("n")
        for con in content:
            if ""!=con:
                c = con.split(' ')
                if '403' != c[8] and '112.253.28.43' != c[0]:
                    if ".rar" in  c[6]:
                        shellcmd(c[0],con)
                    elif '/wp-comments-post.php' in c[6] and 'MSIE' == c[13] and '6.0;'== c[14]:
                        shellcmd(c[0],con)
                    elif '"-"' == c[11] and '"-"' == c[12] and  '.php' in c[6]:
                        shellcmd(c[0],con)
    time.sleep(1)

功能我为了简便,使用了shell命令,editblocksip.sh脚本以前说过,就是操作nginx黑名单用的,此脚本还是受到了写php守护进程的启发,1、每次while循环,判断文件自身是否被修改,如果修改就结束,然后由进程守护shell再启用,2、中间的实现也非常简单,记录最近读取的行号,有新记录产生,就执行监控操作,3、过滤已屏蔽的403状态和自身ip地址,4、然后就是自己需要的一些屏蔽规则,有触发则调用editblocksip.sh,将此ip加入403黑名单,这样用户访问会显示我的403页面。
check_python.sh python进程守护队列代码

Shell

#!/bin/bash
EMAIL='zhangcunchao_cn@163.com'
start()
{
        c=`ps w -C python|grep $1|wc -l`
        if [ $c -lt 1 ]
        then
          if [ -f "$1" ];then
          /usr/bin/python $1 > /dev/null &
          else
          `echo 'no such file '$1 | mail -s 'process check error' $EMAIL`
          fi
        fi
}
BASE_PATH=`dirname $0`"/"
cd $BASE_PATH
 
start log.py
原理还是挺简单的
,这里我也简单说一下我学习python后对于其感触。
总的来说,python语法上面和php的确有很大区别,其语法其实和js有很大的类似。python最大的特点就是他严格的缩进,他使用缩进来控制代码块,因为其没有{}这样的大括号,变量也和php一样使用了简单的引用计数来做优化,不过其import这样的导入方式其实效率不高,原因大家应该可以理解,我学习过程中还专门做了php和python的执行效率对比,while循环的话php应该比python快一半左右,当然这也不能说明什么,不过python的确是运维工作非常好的助手。

时间: 2024-10-29 12:12:30

python重构日志监控脚本的程序代码的相关文章

python有证书的加密解密程序代码

最近在做python的加解密工作,同时加完密的串能在php上能解出来,网上也找了一些靠谱的资料,刚好也有时间我就总结了一下python在加密与解密这块的代码,今后可能还能用的上.相对于php而言python这块加解密组件较多的,分别是:     python-crypto - 这个组件是基本组件,使用的函式相对比较复杂.     ezPyCrypto - 相对简单,但他作出?淼墓?皆课薹ㄓ肫渌?淌较嗉嫒荨?br />     SSLCrypto - 与 ezPyCrypto 是相同一个作者开发,

Python下载百度贴吧图片程序代码

   代码如下 复制代码 #!/usr/bin/env python #-*- coding: UTF-8 -*- import urllib,re,os def demo():     print "-----------------------------------------\n"     print u"      Python下载百度贴吧图片\n"     print "-------------------------------------

Python/PHP数字螺旋矩阵的程序代码

什么是螺旋矩阵? 螺旋矩阵是指一个呈螺旋状的矩阵,它的数字由第一行开始到右边不断变大,向下变大,向左变大,向上变大,如此循环.下图就是一个螺旋矩阵的示例: 郑晓在这里分别使用了Python和PHP来实现了数字的螺旋矩阵.其中的PHP版本写成了函数,更加灵活的对矩阵进行控制.写Python时由于是第一次写,有些生疏,分别用了两种方法来实现...下面上代码吧: Python螺旋矩阵的第一版(比较难以理解?!): #coding:gbk L = 6 #矩阵大小 result = [[0]*L for 

linux系统使用python获取cpu信息脚本分享_python

linux系统使用python获取cpu信息脚本分享 复制代码 代码如下: #!/usr/bin/env Pythonfrom __future__ import print_functionfrom collections import OrderedDictimport pprint def CPUinfo():    ''' Return the information in /proc/CPUinfo    as a dictionary in the following format:

使用Python实现对Linux服务器CPU内存网络的监控脚本

本文介绍一下使用 Python 脚本实现对 Linux 服务器 CPU 内存 网络的监控脚本的编写.Python 是由 Guido van Rossum 开发的.可免费获得的.非常高级的解释型语言.其语法简单易懂,而其面向对象的语义功能强大(但又灵活).Python 可以广泛使用并具有高度的可移植性.本文 Linux 服务器是 Ubuntu 12.10, Python 版本 是 2.7 .如果是 Python 3.0 版本的语法上有一定的出入.另外这里笔者所说的 Python 是 CPython

几个常用的Linux操作系统监控脚本代码

本文介绍了几个常用的Linux监控脚本,可以实现主机网卡流量.系统状况.主机磁盘空间.CPU和内存的使用情况等方面的自动监控与报警.根据自己的需求写出的shell脚本更能满足需求,更能细化主机监控的全面性. 最近时不时有互联网的朋友问我关于服务器监控方面的问题,问常用的服务器监控除了用开源软件,比如:cacti,nagios监控外是否可以自己写shell脚本呢?根据自己的需求写出的shell脚本更能满足需求,更能细化主机监控的全面性. 下面是我常用的几个主机监控的脚本,大家可以根据自己的情况再进

几个常用的Linux操作系统监控脚本代码_linux shell

本文介绍了几个常用的Linux监控脚本,可以实现主机网卡流量.系统状况.主机磁盘空间.CPU和内存的使用情况等方面的自动监控与报警.根据自己的需求写出的shell脚本更能满足需求,更能细化主机监控的全面性. 最近时不时有互联网的朋友问我关于服务器监控方面的问题,问常用的服务器监控除了用开源软件,比如:cacti,nagios监控外是否可以自己写shell脚本呢?根据自己的需求写出的shell脚本更能满足需求,更能细化主机监控的全面性. 下面是我常用的几个主机监控的脚本,大家可以根据自己的情况再进

Python中删除文件的程序代码_python

Python是一种面向对象的解释性的计算机程序设计语言,也是一种功能强大而完善的通用型语言,已经具有十多年的发展历史,成熟且稳定.Python 具有脚本语言中最丰富和强大的类库,足以支持绝大多数日常应用.它具有简单.易学.免费.开源.可移植性.解释性.面向对象.可扩展性.可嵌入性以及丰富的库等特性,目前的应用范围也非常广泛,如系统编程.图像处理.数据库编程等方面. Python开发者可以使用文本编辑器(如Windows的记事本等)或者专业的IDE(集成开发环境)来编写程序代码.IDE使得开发者可

用VBS调用程序并对程序的运行情况进行监控的两个代码_vbs

有同时要用一个CAE软件调用外部程序,但是,通过这个CAE软件调用外部程序以后,因为这个外部程序有参数,调用方法写在Bat文件里的,由CAE软件来调用这个Bat,所以,CAE软件没办法对调用的程序进行监控,调用的程序还在运行当中,准备工作还没完成,就到了下一流程,所以,造成流程出错,我写了两个VBS代码,通过它来调用就解决了这个问题!两个小程序分别是按不同的方式来监控的!    两个程序的调用方式不一样,一个是对系统进程进行监控,一个是对程序生成的文件特征进行监控! 第一个: '该程序用来配合S