Pièce jointe « makeit.py »

Téléchargement

   1 #!/usr/bin/env python
   2 # -*- coding: utf-8 -*-
   3 
   4 import os, sys, csv, getopt
   5 
   6 
   7 def listmodule(path):
   8 	liste = [os.path.splitext(os.path.basename(fle))[0]
   9 		 for fle in os.listdir(path)]
  10 	set = {}
  11 	map(set.__setitem__, liste, [])
  12 	return set.keys()
  13 
  14 def importing(modulename):
  15 	return __import__(modulename)
  16 
  17 """
  18 def read (filename):
  19 	
  20 	Détermine le type de fichier de données et active la fonction
  21 	de lecture correspondante.
  22 
  23 	ext = os.path.splitext(filename)[1]
  24 	read_func = getattr(__NAME__, "read_%s"% ext, read_csv)
  25 	read_func(filename)
  26 """
  27 
  28 def read_csv(csvfile):
  29 	"""
  30 	Cette fonction parse le fichier de données au format csv
  31 	et retourne le searchList à partir de ces données.
  32 	La première ligne de données contient les champs de colonne.
  33 	"""
  34 	infile = csv.reader(open(csvfile,"rb"))
  35 	headers =  []
  36 	isFirstLine = True
  37 	searchList = []
  38 	for row in infile:
  39 		entry = {}
  40 		if isFirstLine :
  41 			isFirstLine = False
  42 			headers = row
  43 			continue
  44 		else:
  45 			for item in headers:
  46 				entry[item] = row[headers.index(item)]	
  47 		searchList.append(entry)
  48 	return searchList
  49 
  50 """
  51 Produit les fichiers de configuration de Nagios:
  52 	- basedir = contient un sous répertoire pour les templates compilés et
  53 		    un sous répertoire pour les fichiers de config générés
  54 	- tempdir = répertoire contenant les templates générés par cheetah
  55 	- confdir = répertoire dans lequel sont déposés les fichiers de conf de
  56 		    nagios générés par ce script
  57 	- datadir = répertoire dans lequel sont déposés les fichiers de données
  58 
  59 	Si basedir est spécifié seul: tempdir = basedir/templates, 
  60 	confdir = basedir/conf et datadir = basedir/data
  61 	Si basedir est spécifié avec l'un des trois autres paramètres, alors la 
  62 	valeur du paramètre spécifié est prioritaire:
  63 		basedir = /root, tempdir = /root/cheetah, alors 
  64 		confdir = /root/conf, tempdir = /root/cheetah et
  65 		datadir = /root/data
  66 	Si basedir n'est pas spécifié, alors, ce sera par défaut /etc/nagios3
  67 """
  68 def process(basedir='/etc/nagios3', tempdir='/etc/nagios3/templates',
  69 		confdir='/etc/nagios3/conf.d', datadir='/etc/nagios3/data'):
  70 	for modulename in listmodule(tempdir):
  71 		if tempdir not in sys.path:
  72 			sys.path.append(tempdir)
  73 		module = importing(modulename)
  74 		searchlist = read_csv(os.path.join(datadir, modulename+ ".csv"))
  75 		outfile = open(os.path.join(confdir, modulename+ ".cfg"), "w")
  76 		for dic in searchlist:
  77 			liste = []
  78 			liste.append(dic)
  79 			serv = getattr(module, modulename)(searchList=liste)
  80 			outfile.write(serv.respond())
  81 			outfile.write("\n")
  82 		outfile.close()
  83 
  84 def usage():
  85 	pass
  86 
  87 def main(argv):
  88 	basedir = '/etc/nagios3'
  89 	tempdir = ''
  90 	confdir = ''
  91 	datadir = ''
  92 	
  93 	try:
  94 		opts, args = getopt.getopt(argv, "b:c:t:d:",
  95 			 ["basedir=", "confdir=", "tempdir=", "datadir="])
  96 		for key in args:
  97 			if args.index(key) % 2 == 0: continue
  98 			if key == '--basedir':
  99 				basedir = args[args.index(key)+1]
 100 			else:
 101 				if key == '--tempdir': tempdir = args[args.index(key)+1]
 102 				else:
 103 					if key == '--confdir':
 104 						confdir= args[args.index(key)+1]
 105 					else: datadir == args[args.index(key)+1]
 106 		if len(tempdir) == 0: tempdir = basedir+'/templates'
 107 		if len(confdir) == 0: confdir = basedir+'/conf.d'
 108 		if len(datadir) == 0: datadir = basedir+'/data'
 109 		process(basedir, tempdir, confdir, datadir)
 110 	except getopt.GetoptError:
 111 		usage()
 112 		sys.exit(1)
 113 
 114 main(sys.argv)

Fichiers joints

Pour vous référer aux pièces jointes d'une page, utilisez attachment:filename, comme indiqué ci-dessous dans la liste de fichiers. N'utilisez pas l'URL du lien [get], car elle peut changer et donc être facilement cassée.
 All files | Selected Files: delete move to page copy to page

Vous n'êtes pas autorisé à joindre un fichier à cette page.