diff --git a/rebuild_cobbler_system.py b/rebuild_cobbler_system.py index c08cf95..a976d7a 100644 --- a/rebuild_cobbler_system.py +++ b/rebuild_cobbler_system.py @@ -1,5 +1,3 @@ -#!/usr/bin/env python - import os import commands @@ -26,14 +24,21 @@ def rebuild_system(pf, dic): os.system(cmd) #add ipmilan print 'Done => %s' %cmd add_devs = v.get('add_devs') - if len(add_devs) > 0: - for i,j in add_devs.items(): - if len(j) == 4: - _add_gw = '--gateway %s' %j[3] if len(j[3])>0 else '' - elif len(j) == 3: - _add_gw = '' - cmd = 'cobbler system edit --name=%s --interface=%s --mac=%s --ip-address=%s --subnet=%s %s --static=1' %(hostname, i, j[0], j[1], j[2], _add_gw) - os.system(cmd) #add dev + if add_devs is not None: + if len(add_devs) > 0: + for i,j in add_devs.items(): + if len(j) == 4: + _add_gw = '--gateway %s' %j[3] if len(j[3])>0 else '' + elif len(j) == 3: + _add_gw = '' + cmd = 'cobbler system edit --name=%s --interface=%s --mac=%s --ip-address=%s --subnet=%s %s --static=1' %(hostname, i, j[0], j[1], j[2], _add_gw) + os.system(cmd) #add dev + print 'Done => %s' %cmd + kickstart=v.get('kickstart') + if kickstart is not None: + if len(kickstart) > 0: + cmd = 'cobbler system edit --name=%s --kickstart=%s' %(hostname,kickstart) + os.system(cmd) #add kickstart print 'Done => %s' %cmd print '%s rebuild successfully.\n' %k print 'cobbler sync begin...' @@ -43,31 +48,28 @@ def rebuild_system(pf, dic): ##data -profile = "Centos7-cn0.ketong.com" +profile = "CentOS7.2-x86_64" lis = {} -lis['cns-1'] = {"hostname":"cns-1.10.179.2.1.phy.cns.cntest.keytone", - "ipmilan":("10.179.3.1", "root", "calvin"), - "add_devs":{ - "em1":('f0:4d:a2:08:46:e1', '10.179.2.1', '255.255.0.0', '10.179.0.254'), - } -} -lis['cns-2'] = {"hostname":"cns-2.10.179.2.2.phy.cns.cntest.keytone", - "ipmilan":("10.179.3.2", "root", "calvin"), - "add_devs":{ - "em1":('f0:22:19:61:e9:65', '10.179.2.2', '255.255.0.0', '10.179.0.254'), - } +lis['B-control-1'] = {"hostname":"B-control-1", + "ipmilan":("10.100.0.201", "root", "calvin"), + "add_devs":{ + "em4":('f1:2a:72:da:88:d3', '10.100.0.101', '255.255.255.0'), + }, + "kickstart":"/var/lib/cobbler/kickstarts/B.ks", } -lis['nat-1'] = {"hostname":"nat-1.10.179.6.1.phy.nat.cntest.keytone", - "ipmilan":("10.179.7.1", "root", "calvin"), - "add_devs":{ - "em1":('f0:22:19:63:31:62', '10.179.6.1', '255.255.0.0'), - } +lis['B-cns-1'] = {"hostname":"B-cns-1", + "ipmilan":("10.100.0.204", "root", "calvin"), + "add_devs":{ + "em4":('f1:ba:db:31:7f:39', '10.100.0.104', '255.255.255.0'), + }, + "kickstart":"/var/lib/cobbler/kickstarts/B.ks", } -lis['nat-2'] = {"hostname":"nat-2.10.179.6.2.phy.nat.cntest.keytone", - "ipmilan":("10.179.7.2", "root", "calvin"), - "add_devs":{ - "em1":('f0:22:19:62:34:15', '10.179.6.2', '255.255.0.0'), - } +lis['B-nat-1'] = {"hostname":"B-nat-1", + "ipmilan":("10.100.0.207", "root", "calvin"), + "add_devs":{ + "em4":('f1:4d:a2:08:78:c3', '10.100.0.107', '255.255.255.0'), + }, + "kickstart":"/var/lib/cobbler/kickstarts/B.ks", } ##do diff --git a/zabbix_get_history.py b/zabbix_get_history.py new file mode 100644 index 0000000..4792edc --- /dev/null +++ b/zabbix_get_history.py @@ -0,0 +1,132 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +import json +import urllib2 +import os,sys +import time,datetime +import re +import logging + +class ZabbixApi: + def __init__(self,api_info): + self.api_info = api_info + self.header = {"Content-Type": "application/json"} + self.api_data = { + 'jsonrpc':'2.0', + 'method':'', + 'params':'', + 'id':0 + } + self._set_auth_session() + def _set_auth_session(self): + self.api_data['method'] = 'user.login' + self.api_data['params']= { + 'user':self.api_info['user'], + 'password':self.api_info['password'] + } + response = self._request() + self.api_data['auth'] = response['result'] + self.api_data['id'] = 1 + def _request(self): + post_data = json.dumps(self.api_data) + req = urllib2.Request(self.api_info['url'],post_data) + for k,v in self.header.items(): + req.add_header(k,v) + try: + result = urllib2.urlopen(req) + except urllib2.URLError as e: + print e.code + else: + response = json.loads(result.read()) + result.close() + return response + def run(self,method,params): + self.api_data['method'] = method + self.api_data['params'] = params + return self._request() + + +class writelogfile(object): + def __init__(self,logname): + self.logfilename = logname + def log(self,logmsg): + fd = open(self.logfilename, 'a') + _logmsg = "%s\n" %(logmsg) + fd.write(_logmsg) + fd.close() + + +if __name__ == "__main__": + api_info = { + 'url': 'http://192.168.1.200/zabbix/api_jsonrpc.php', + 'user':'admin', + 'password':'xxxxxx' + } + zapi=ZabbixApi(api_info) + args=[ + ##add {host:[([key1,key2...],history_object_type1),([key5,key6...],history_object_type2),...]}, + ##history_object_type: 0-float; 1-string; 2-log; 3-integer; 4-text. + {"cns-1":[(["system.cpu.load[percpu,avg1]","system.cpu.load[percpu,avg5]"],0), + (["vm.memory.size[available]"],3), + ]}, + {"cns-2":[(["system.cpu.load[percpu,avg1]","system.cpu.load[percpu,avg5]"],0), + (["vm.memory.size[available]"],3), + ]}, + {"cns-3":[(["system.cpu.load[percpu,avg1]","system.cpu.load[percpu,avg5]"],0), + (["vm.memory.size[available]"],3), + ]}, + ] + try: + _clock_begin,_clock_end=str(sys.argv[1]),str(sys.argv[2]) + except: + print 'Usage: python %s "2016-05-01 00:00:00" "2016-05-31 23:59:59"' %(sys.argv[0]) + sys.exit(1) + clock_begin=time.mktime(time.strptime(_clock_begin,"%Y-%m-%d %H:%M:%S")) + clock_end=time.mktime(time.strptime(_clock_end,"%Y-%m-%d %H:%M:%S")) + logfile="/tmp/data_%s_to_%s.csv" %(_clock_begin.replace(" ","-"),_clock_end.replace(" ","-")) + if os.path.exists(logfile): + os.remove(logfile) + data=[] + msg='"HOST","KEY","VAULE","CLOCK"' + writelogfile(logfile).log(msg) + for arg in args: + for host,keys in arg.items(): + tmp=zapi.run("host.get",{"output":["hostid"],"filter":{"host":host}}) + if tmp["result"]==[]: + continue + host_id=tmp["result"][0]["hostid"] + for _key in keys: + dic={} + key=_key[0] + history_object_type=int(_key[1]) + itemids=[] + for k in key: + tmp=zapi.run("item.get",{"output":"itemids","hostids":host_id,"search":{"key_":k}}) + if tmp["result"]==[]: + continue + item_id=tmp["result"][0]["itemid"] + dic[item_id]=k + itemids.append(item_id) + msg="" + msg+="Host:"+str(host)+", " + msg+=str(["(Key:"+str(m)+",Itemid:"+str(l)+")" for l,m in dic.items()]) + print "\n\033[0;32m%s\033[0m" %msg + tmp=zapi.run("history.get",{"history":history_object_type,"itemids":itemids,"output":"extend", + "time_from":clock_begin,"time_till":clock_end}) + _data=tmp["result"] + print host+": "+str(key)+" "+str(len(_data))+" rows" + for i in _data: + d={} + value=i["value"] + _clock=i["clock"] + clock=time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(float(_clock))) + k=dic[i["itemid"]] + d["key"]=k + d["host"]=host + d["value"]=value + d["clock"]=clock + data.append(d) + msg='"%s","%s","%s","%s"' %(host,k,value,clock) + writelogfile(logfile).log(msg) + print "%s is the output data file." %logfile + #print len(data) #it is the data u want.