コード例 #1
0
ファイル: black.py プロジェクト: qinguoan/rambo
class BlackManager(object):
    def __init__(self,**conf):
        self.blackr  = RedisClient(db='black', **conf)
        self.ranger = MagicShow(**conf)

    def addbl(self,data):
        expire = data['expire']
        hosts = self.ranger.load(data['range']).show()
        if hosts == 'all':
            key = 'black_%s_%s' % (data['policy'],host)
            self.blackr.set(key,'black',ex=expire)
        else:
            for host in hosts:
                key = 'black_%s_%s' % (data['policy'],host)
                self.blackr.set(key,'black',ex=expire)

    def delbl(self,data):
        print data
        policy = data['policy']
        hosts = self.ranger.load(data['range']).show()
        for host in hosts:
            if policy != 'all':
                key = 'black_%s_%s' % (policy,host)
                self.blackr.delete(key)
            else:
                keys = self.blackr.keys('black_*_%s' % host)
                for key in keys:
                    self.blackr.delete(key)

    def check(self,host,policy=None):
        keys = list()
        key = 'black_all_%s' % (host)
        keys.append(key)
        if policy:
            keys.append('black_%s_%s' % (policy,host))
            keys.append('black_%s_all' % (policy))
        for key in keys:
            if self.blackr.exists(key):
                return True
        return False

    def show(self):
        keys = self.blackr.keys('black*')
        for k in keys:
            try:
                typer,policy,host = k.split('_')
                ttl = self.blackr.pttl(k)
            except:
                print "=================", k
            else:
                print "策略:%s, 主机:%s, 剩余时间:%s 秒" % (policy,host,int(ttl/1000))
コード例 #2
0
ファイル: load_group.py プロジェクト: qinguoan/rambo
from Radix import CharSet

parm = { 'fname=s' : 'a conf info data file, yaml format' }
options = OptConf( **parm )
opt = options.opt
args = options.args
conf = options.conf

if 'fname' not in opt: options.help()
alertr = RedisClient(db='alert', **conf['database'])
print "redis connect stat: %s" % alertr.ping()
pfile = opt['fname']
data = yaml.load(open(pfile))
groups = alertr.keys('group:*')
old_data = dict()
for group in groups:
    try:
        v = alertr.get(group)
    except:
        pass
    old_data[group] = v


for p in data:
    name = 'group:'+p.pop('name')
    old_data[name] = json.dumps(p)
    print "设置%s : %s\n" % (name, old_data[name])

for i, v in old_data.items():
    alertr.set(i, v)