ich habe vor kurzen begonnen mir Pyhton zu Gemuete zu fuehren. Das klappt auch relativ gut...('')
Nun habe ich fuer ein Skript fuer NAGIOS ein Network Monitoring System (NMS) geschrieben, welches aus einer XML-Datei eines Temp-Sensors die aktuelle Temperatur ausliest und diese entsprechend verarbeitet.
Jedoch kam ich nun zu folgendem Problem:
das Skript 'check_temperature.py' kann ich in meinem Home-Verzeichnis ausfuehren.
Aber ich kann es nicht in einem anderen Verzeichnis unter einem anderen User (der Nagios user) ausfuehren.
Ausgabe (in meinem Verzeichnis): 'Temp OK: 23.0'
ist die gewuenschte Ausgabe und der Returnwert stimmt auch
Ausgabe (anderer Ort/ anderer User):
--> keinen Rueckgabewert vom Skript oder Fehler wie diesen:
Code: Alles auswählen
File "check_temperature2.py", line 57, in <module>
CurrentTemp = float(Temp)/10
TypeError: float() argument must be a string or a number
Code: Alles auswählen
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
import os
import urllib
from optparse import OptionParser
parser = OptionParser("check_temperature -H http://... -w WarningTemp -c CriticalTemp")
##########################################################################
#PARAMETER # check_temperature -H http://... -w 25 -c 30
parser.add_option("-H", "--URL", dest="url")
parser.add_option("-w", "--Warning", dest="warning")
parser.add_option("-c", "--Critical", dest="critical")
(optionen, args) = parser.parse_args()
########################################
#Aus DATEI alles auslesen
#datei = open("tme.xml", "r")
#DateiInhalt = datei.readlines()
#datei.close()
########################################
# Aus INTERNET(URL) lesen
url="http://theta0/tme.xml"
Content = urllib.urlopen(url)
########################################
def ReadXML (Content, StartsWith, EndsWith):
for Line in Content:
if Line.count(StartsWith) > 0:
Temp = Line[Line.index(StartsWith) + len(StartsWith) :Line.index(EndsWith)]
return Temp
########################################
Temp = ReadXML(Content, "", "")
CurrentTemp = float(Temp)/10
WarningTemp = 26.0
CriticalTemp = 28.5
#AUSWERTUNG
if CurrentTemp ==None:
print "ERROR - could not receive temperature from sensor or could not connect to sensor"
print "Please be sure you have installed and connected your device to the network"
exit (3)
if CurrentTemp >= WarningTemp:
if CurrentTemp >= CriticalTemp:
print "Temp Critical: ",CurrentTemp
exit (2)
print "Temp Warning: ",CurrentTemp
exit (1)
else:
print "Temp OK: ",CurrentTemp;
exit (0)
1. die Berechtigungen fuer die Datei der jeweiligen User... schon geprueft --> kein Erfolg
2. der Pfad fuer das zu verwendende Python stimmt nicht mehr ueberein
3. sonstiges: ich bin zu dumm/ ein anderes Problem
Koennt ihr mir vielleicht helfen?
Ich verstehe das nicht, warumes an einem Ort laeuft und dort wo's soll nicht
Danke
P.S hat jemand Ahnung von Nagios oder Bock Erfahrungen darueber auszutauschen?