很早的时候就开始开发这套系统,中间各种原因,导致进度一直很慢,现功能完成80%左右,努力年前写完所有代码

开发环境:saltstack、 django1.7 、python2.7、 tornado、rabbitmq、redis、zabbix

已实现功能: 装机,服务器授权,资产管理,添加监控,初始化基础服务,执行命令,自动化发布,故障统计管理

使用redis是使用其订阅key的功能,达到websocket时时回显内容,rabbitmq主要是在添加用户时为了何证数据不丢失,使用rabbitmq功能,django主要写代码逻缉,tornado一方面做发布异常接口,另一方面做websocket server使用,具体实现过程就不多讲了,主要就是调用saltstack api来完成对系统的控制,和基础环境的初始化,还是看截图吧,大家可以把自己开发的功能或截图发到网上,大家一起讨论,让运维工作更加轻松更加智能,

git地址https://github.com/voilet/cmdb

cmdb1 (更多…)

一月 26th, 2016

Posted In: python

安全一直是我观注的重点,为防止规则直接上线误杀正常请求,通过交换机流量静像到我的一台机器,进行流量静像分析,匹配我的规则,抓除需要加入白名单的url,然后联动nginx 和前端防火墙,行成一套入侵防御系统,以下只为针对七层做分析,稍后会对四层数据一起分析入库

config下whiteurl.py中添加需要过滤的白名单即可,当然可以是txt,可根据自己的实际情况进行修改,核心代码就这么多,IP库自己下一个就可以了

waf

代码如下:
waf.py

# !/usr/bin/env python
#-*- coding: utf-8 -*-
#=============================================================================
#     FileName: test.py
#         Desc:
#       Author: 苦咖啡
#        Email: voilet@qq.com
#     HomePage: http://blog.kukafei520.net
#      Version: 0.0.1
#   LastChange: 2014-09-01
#      History:
#=============================================================================
import pcap
import dpkt
import sys
import time
import re

#初始化ip库
from api.QQWry import *
from check_data import hack_filter, hackerinfo
#导入白名单
from config.whiteurl import *

pc = pcap.pcap("p2p1")    #注,参数可为网卡名,如eth0
pc.setfilter('tcp port 80')    #设置监听过滤器



for ts, buf in pc:    #ptime为收到时间,pdata为收到数据

    eth = dpkt.ethernet.Ethernet(buf)
    ip = eth.data
    tcp = ip.data
    src_ip = '%d.%d.%d.%d' % tuple(map(ord, list(eth.data.src)))
    src_time = time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(ts + 28800))

    try:
        if tcp.dport == 80:

            http = dpkt.http.Request(tcp.data)

            #截取url以便白名单验证
            get_data_url = http.uri.split("?")[0]

            check_data = hack_filter(http)
            result = check_data.run()

            if result["status"] and get_data_url not in url_list:

                hack_data = hackerinfo(http, result["acl"], src_ip, src_time)
                hack_status = hack_data.run()

                print hack_status

    except:pass

源码下载地址:

https://github.com/voilet/waf

(更多…)

九月 4th, 2014

Posted In: python

最近使用python写一脚本,就字符串中数字问题,网上查了下原来python早都为我们提供了很好的方法,在次感叹自己python的无知,在此做下记录

>>> crazystring = ‘dade142.;!0142f[.,]ad’

只保留数字 >>> filter(str.isdigit, crazystring) ‘1420142’

只保留字母 >>> filter(str.isalpha, crazystring) ‘dadefad’

只保留字母和数字 >>> filter(str.isalnum, crazystring) ‘dade1420142fad’

如果想保留数字0-9和小数点’.’ 则需要自定义函数

>>> filter(lambda ch: ch in ‘0123456789.’, crazystring) ‘142.0142.’

或者使用正则表达式或循环

九月 2nd, 2014

Posted In: python

以后我代码的log, 嘿嘿

code

(更多…)

十二月 25th, 2013

Posted In: python

使用salt收集minion信息时,默认items的信息有些不是我们想要的,有些想要的又没有,就扩展下了grains的方法,呵,感谢还不错

1

#!/usr/bin/env python
#-*- coding: utf-8 -*-
#=============================================================================
#     FileName:
#         Desc:
#       Author: 苦咖啡
#        Email: voilet@qq.com
#     HomePage: http://blog.kukafei520.net
#      Version: 0.0.1
#   LastChange: 
#      History:
#=============================================================================
from __future__ import print_function
from collections import namedtuple

import os
import subprocess
import re
import hashlib
#对字典取子集
def sub_dict(form_dict, sub_keys, default=None):
    return dict([(k, form_dict.get(k.strip(), default)) for k in sub_keys.split(',')])
#读取cpuinfo信息
# dmidecode -t 4
def read_cpuinfo():
    cpu_stat = []
    with open('/proc/cpuinfo', 'r') as f:
        data = f.read()
        for line in data.split('\n\n'):
            cpu_stat.append(line)
    return cpu_stat[-2]
 (更多…)

十二月 12th, 2013

Posted In: python

内存信息 / meminfo
返回dict

#!/usr/bin/env python 
def memory_stat(): 
    mem = {} 
    f = open("/proc/meminfo") 
    lines = f.readlines() 
    f.close() 
    for line in lines: 
        if len(line) < 2: continue 
        name = line.split(':')[0] 
        var = line.split(':')[1].split()[0] 
        mem[name] = long(var) * 1024.0 
    mem['MemUsed'] = mem['MemTotal'] - mem['MemFree'] - mem['Buffers'] - mem['Cached'] 
    return mem

CPU信息 / cpuinfo
返回list,每核心一dict

#!/usr/bin/env python 
def cpu_stat(): 
    cpu = [] 
    cpuinfo = {} 
    f = open("/proc/cpuinfo") 
    lines = f.readlines() 
    f.close() 
    for line in lines: 
        if line == 'n': 
            cpu.append(cpuinfo) 
            cpuinfo = {} 
        if len(line) < 2: continue 
        name = line.split(':')[0].rstrip() 
        var = line.split(':')[1] 
        cpuinfo[name] = var 
    return

(更多…)

十二月 12th, 2013

Posted In: python

最近写python常用到时间和日期格式的问题,在网上看到一大神写了点片段,调试完总算满足了自己的需求,相信很多朋友也有这方面的需求,在此发出来和大家分享

#!/usr/bin/env python
#-*- coding: utf-8 -*-
#=============================================================================
#     FileName:
#         Desc:
#       Author: 苦咖啡
#        Email: voilet@qq.com
#     HomePage: http://blog.kukafei520.net
#      Version: 0.0.1
#   LastChange: 
#      History:
#=============================================================================

import datetime

date1 = datetime.datetime.now()
this_week_start_dt = str(date1-datetime.timedelta(days=date1.weekday())).split()[0]
this_week_end_dt = str(date1+datetime.timedelta(days=6-date1.weekday())).split()[0]
print this_week_start_dt,this_week_end_dt

 (更多…)

十二月 11th, 2013

Posted In: python

无觅相关文章插件,快速提升流量