Hi,
ich will aus einer vorhandenen DB eine Nagios config generieren.
Ich habe mir jetzt schonmal MySQL-Python installiert. Das kann ich dann mit "import _mysql" benutzen.
Jetzt frage ich mich schon seit 2 Tagen wie ich es hinbekommen kann daraus eine schöne Nagiosconfig zu basteln. Also damit die Nagios Syntax der .cfg's beim generieren erhalten bleibt??
Kann mir da jemand auf die Sprünge helfen?
Danke schonmal! Ich hoffe, ich habe mein Problem detailliert genug beschrieben!
Gruß,
Poolboy
Config generieren aus DB
def getGreetingForm(self):
return 'Gruß Poolboy'
return 'Gruß Poolboy'
`_mysql` solltest Du nicht importieren. Der Unterstrich bedeutet, dass dieses Modul nicht zur öffentlichen Schnittstelle gehört. Die steckt im Modul `MySQLdb`.
def getGreetingForm(self):
return 'Gruß Poolboy'
return 'Gruß Poolboy'
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Ist doch gleich der erste Satz, der sogar noch auf das "richtige" Modul verlinktDoku hat geschrieben: _mysql
If you want to write applications which are portable across databases, use MySQLdb, and avoid using this module directly
Aber selbst wenn dem nicht so wäre, hätte ich auf den Rat eines erfahrenen Anwenders wie Blackjack gehört! Oder wieso fragst Du sonst in einem Forum nach?
Eigentlich wollte ich eine Antwort auf diese Frage aber trotzdem Danke für die Info und ich habs wohl überlesen.Poolboy hat geschrieben:
Jetzt frage ich mich schon seit 2 Tagen wie ich es hinbekommen kann daraus eine schöne Nagiosconfig zu basteln. Also damit die Nagios Syntax der .cfg's beim generieren erhalten bleibt??
Kann mir da jemand auf die Sprünge helfen?
Danke schonmal! Ich hoffe, ich habe mein Problem detailliert genug beschrieben!
Gruß,
Poolboy
Gruß,
Poolboy
def getGreetingForm(self):
return 'Gruß Poolboy'
return 'Gruß Poolboy'
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Naja, immerhin hast Du nun schon mal einen potenziellen Designfehler weniger
@Nagios: Damit kenne ich mich null aus und kann demzufolge dazu auch nichts sagen. Ich kapiere nicht einmal, was Du da genau machen willst
(Anhand von Daten in der DB irgend eine Config erzeugen?)
@Nagios: Damit kenne ich mich null aus und kann demzufolge dazu auch nichts sagen. Ich kapiere nicht einmal, was Du da genau machen willst
(Anhand von Daten in der DB irgend eine Config erzeugen?)
Wie sieht die DB-Struktur aus?Poolboy hat geschrieben: ich will aus einer vorhandenen DB eine Nagios config generieren.
Wie sieht die Syntax der Nagios-Konfigurationsdateien aus?Poolboy hat geschrieben: Jetzt frage ich mich schon seit 2 Tagen wie ich es hinbekommen kann daraus eine schöne Nagiosconfig zu basteln. Also damit die Nagios Syntax der .cfg's beim generieren erhalten bleibt??
Ich habe bei deiner bisherigen Problembeschreibung Schwierigkeiten damit, die Ausgangslage und das Ziel zu erkennen. Hast du eine Konfigurationsdatei die du anhand der Daten aus der DB anpassen möchtest oder willst du die Datei komplett neu erzeugen (wobei ich dann das "erhalten bleibt" nicht verstehe)?
Ausgangslage:
DB / Tabelle mit:
also 3 Spalten mit Host, pname und pvalue die befüllt werden.
Die Config sieht so aus:
define host {
host1 parameter 100
}
so und ich hab nur die DB mit den Werten und daraus will ich dann eine .cfg in dieser Syntax haben:
Überblick:
Ich will also eine neue Datei erzeugen mit der Syntax:
Die Werte wie host1, parameter und 100 will ich aus einer MySQL DB ziehen. Wie ich das mache kann ich ja ergoogeln aber ich weiß nicht wie ich am Ende mit den Werten eine Datei erstellen kann mit dieser Syntax.
PS.: in Java würde ich es wohl mit PrintWriter machen!
DB / Tabelle mit:
Code: Alles auswählen
Host | pname | pvalue |
-------------------------------
host1 | parameter | 100 |
host2 | parameter | 200 |
Die Config sieht so aus:
define host {
host1 parameter 100
}
so und ich hab nur die DB mit den Werten und daraus will ich dann eine .cfg in dieser Syntax haben:
Code: Alles auswählen
define host {
host1 parameter 100
}
Ich will also eine neue Datei erzeugen mit der Syntax:
Code: Alles auswählen
define host {
host1 parameter 100
}
PS.: in Java würde ich es wohl mit PrintWriter machen!
def getGreetingForm(self):
return 'Gruß Poolboy'
return 'Gruß Poolboy'
Sind das da zwischen den Wörtern 'host1' und 'parameter' wirklich nur Leerzeichen, oder muß da was spezielles hin, z.B. ein Tabulator? Ist die Anzahl der Leerzeichen relevant? Die Antworten lauten vermutlich alle 'nein', aber man sollte sowas vorher klären.
Ich würde eine Sequenz von Tupeln (host, pname, wert) nehmen und mittels
zeilenweise zu einem Text zusammenfügen. Wenn du die Daten aus einer Datenbank beziehst, stehen die Chancen ziemlich gut, daß du sie schon in genau dieser Form erhälst.
Den Text dann in die Datei zu schreiben ist trivial. Wie das geht, findest du dann im Tutorial oder in der Doku. Zwischen den Python-Versionen hat sich da eine leichte Veränderung ergeben, welche Variante als der "schöne" Weg betrachtet wird.
Ich würde eine Sequenz von Tupeln (host, pname, wert) nehmen und mittels
Code: Alles auswählen
" ".join(tpl)
Den Text dann in die Datei zu schreiben ist trivial. Wie das geht, findest du dann im Tutorial oder in der Doku. Zwischen den Python-Versionen hat sich da eine leichte Veränderung ergeben, welche Variante als der "schöne" Weg betrachtet wird.
Danke!
Ja zwischen host pname und pvalue soll jeweils ein Tab sein.
Dann schau ich mal, ob ich das mit einem Tupel hinbekomme :-/
Ja zwischen host pname und pvalue soll jeweils ein Tab sein.
Dann schau ich mal, ob ich das mit einem Tupel hinbekomme :-/
def getGreetingForm(self):
return 'Gruß Poolboy'
return 'Gruß Poolboy'
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Damit fehlt aber das drum herumPekh hat geschrieben: Ich würde eine Sequenz von Tupeln (host, pname, wert) nehmen und mittelszeilenweise zu einem Text zusammenfügen.Code: Alles auswählen
" ".join(tpl)
Code: Alles auswählen
data = []
# in rows die DB Ergebnisse
for row in rows:
data.append(u"""
define host {{
{0}
}}
""".format("\t".join(row)))
return u"\n".join(data)
Huhu,Hyperion hat geschrieben:Damit fehlt aber das drum herumPekh hat geschrieben: Ich würde eine Sequenz von Tupeln (host, pname, wert) nehmen und mittelszeilenweise zu einem Text zusammenfügen.Code: Alles auswählen
" ".join(tpl)
Code: Alles auswählen
data = [] # in rows die DB Ergebnisse for row in rows: data.append(u""" define host {{ {0} }} """.format("\t".join(row))) return u"\n".join(data)
ok danke schonmal! Ich versteh das Konstrukt zwar noch nicht aber ich hoffe das kommt noch *g*
Gruß,
Sash
def getGreetingForm(self):
return 'Gruß Poolboy'
return 'Gruß Poolboy'
Was hat eigentlich das zu bedeuten:
Code: Alles auswählen
#!/usr/bin/python
import MySQLdb
db=MySQLdb.connect(host="localhost",
user="root",
passwd="ficken",
db="test")
print "db connect hat geklappt"
Code: Alles auswählen
sash at lxsasi in python % ./dbconnect.py
/usr/lib/python2.6/site-packages/MySQL_python-1.2.3b2-py2.6-linux-i686.egg/_mysql.py:3: UserWarning: Module MySQLdb was already imported from /usr/lib/python2.6/site-packages/setuptools-0.6c9-py2.6.egg/MySQLdb/__init__.pyc, but /usr/lib/python2.6/site-packages/MySQL_python-1.2.3b2-py2.6-linux-i686.egg is being added to sys.path
db connect hat geklappt
def getGreetingForm(self):
return 'Gruß Poolboy'
return 'Gruß Poolboy'