Seite 1 von 1

Übergabe von Parametern

Verfasst: Donnerstag 13. Dezember 2012, 11:04
von davix
Hallo Leute,
ich möchte gerne das Skript bzw. den Check überarbeiten:
https://raw.github.com/dougsland/nagios ... check_rhev

Ziel:
Anstatt eine feste Variable zu benutzen (wie es derzeitig der Fall ist):

Code: Alles auswählen

# Add your rhev-h host below, like "192.168.1.101,192.168.1.102, ..."
HOSTS     = "192.168.1.101,192.168.1.102"
würde ich es gerne als Parameter übergeben:
check_rhev -s 192.168.1.101,192.168.1.102 -t checkHOST -g GUEST


Habe es schon selber probiert, aber da ich ein totaler Anfänger in Python bin, hat es natürlich nicht geklappt.


Was habe ich probiert?

Code: Alles auswählen

# MAIN
if __name__ == "__main__":

        usage = "usage: %prog [options] arg"
        parser = OptionParser(usage)
        parser.add_option("-v", "--verbose", action="store_true", dest="verbose")
        parser.add_option("-q", "--quiet", action="store_false", dest="verbose")
        parser.add_option("-t", "--type-service", action="store", dest="type_service")
#<---Hinzugefügt--->
        parser.add_option("-s", "--server", action="store", dest="HOSTS")

        parser.add_option("-g", "--guest", action="store", dest="guest")
        parser.add_option("-u", "--user", action="store", dest="user")
        parser.add_option("-p", "--password", action="store", dest="passw")
        (options, args) = parser.parse_args()

        # Generic calls - every option will use them
        rhev = checkRHEV()

#<---Entfernt--->
        hosts = HOSTS.split(",")
        
#<---Hinzugefügt--->
        hosts = options.HOSTS.split(",")

        user  = options.user
        passw = options.passw
        guest = options.guest
Fehlermeldungen:
Traceback (most recent call last):
File "check_rhev.backup", line 114, in <module>
if HOSTS == "":
NameError: name 'HOSTS' is not defined

Traceback (most recent call last):
File "check_rhev.backup", line 124, in <module>
hosts = options.HOSTS.split(",")
AttributeError: 'bool' object has no attribute 'split'


Vielen Dank im Voraus!

Grüße
davix

Re: Übergabe von Parametern

Verfasst: Donnerstag 13. Dezember 2012, 11:14
von EyDu
Hallo und willkommen im Forum!

Die Fehlermeldungen sind doch recht deutlich: Die erste besagt, dass es keine Variable mit dem Namen HOSTS gibst, du versuchst sie aber trotzdem zu verwenden. Die zweite sagt, dass options.HOSTS eine boolsche Variable ist und keine split-Methode hat.

Re: Übergabe von Parametern

Verfasst: Donnerstag 13. Dezember 2012, 11:27
von davix
Hi EyDu,
danke!

Ich versuche aber die Variable mittels:

Code: Alles auswählen

parser.add_option("-s", "--server", action="store", dest="HOSTS")
zu übergeben. Bestimmt ist es falsch.

Wieso ist options.HOSTS eine boolische Variable? Ich dacht er übergibt mit dest="HOSTS" einfach die Parameter?

Danke im Voraus!

Re: Übergabe von Parametern

Verfasst: Donnerstag 20. Dezember 2012, 00:18
von davix
Niemand eine Idee oder Hilfestellung?

Re: Übergabe von Parametern

Verfasst: Donnerstag 20. Dezember 2012, 00:36
von lunar
@davix "options.HOSTS" kann keine Boolean sein, wenn Du die Option "-s" wie gezeigt definiert und "options.HOSTS" nirgendwo etwas anderes zugewiesen hast. Irgendwo hast Du also einen Fehler gemacht, doch um den zu suchen, benötigten wir den Quelltext exakt so wie Du ihn verwendest.

Re: Übergabe von Parametern

Verfasst: Freitag 21. Dezember 2012, 13:29
von davix
Hi Lunar,
das ist mein Code, der nicht funktioniert:
http://pastebin.com/s8BH0N1W

Danke für die Hilfe!

Grüße
davix

Re: Übergabe von Parametern

Verfasst: Freitag 21. Dezember 2012, 13:47
von EyDu
Du dürftest gar nicht so weit kommen, da du immer den Zweig

Code: Alles auswählen

if HOSTS == "":
    print "UNKNOWN: please add your RHEV-H hosts into check_rhev!"
    sys.exit(UNKNOWN)
betrittst.

Re: Übergabe von Parametern

Verfasst: Freitag 21. Dezember 2012, 14:05
von kbr
Zudem ist die Definition von HOSTS auskommentiert. Was die erste Fehlermeldung auch besagt.

Re: Übergabe von Parametern

Verfasst: Freitag 21. Dezember 2012, 23:43
von davix
EyDu hat geschrieben:Du dürftest gar nicht so weit kommen, da du immer den Zweig

Code: Alles auswählen

if HOSTS == "":
    print "UNKNOWN: please add your RHEV-H hosts into check_rhev!"
    sys.exit(UNKNOWN)
betrittst.
Ach stimmt, das hatte ich zu diesem Zeitpunkt auskommentiert gehabt.
kbr hat geschrieben:Zudem ist die Definition von HOSTS auskommentiert. Was die erste Fehlermeldung auch besagt.
Wie gesagt, ich möchte die Variable HOSTS dynamisch angeben. Wird es nicht mittels "parser.add_option("-s", "--server", action="store", dest="HOSTS")" übergeben? Wenn nicht, wie mache ich es dann?

Bsp.:
Konsole:
check_rhev.py -s 192.168.1.101,192.168.1.102 -t checkHOST -g GUEST

#Dynamische Variable HOSTS
HOSTS=192.168.1.101,192.168.1.102

Re: Übergabe von Parametern

Verfasst: Dienstag 25. Dezember 2012, 11:56
von lunar
@davix Verschwende doch bitte nicht unsere Zeit, und zeige Quelltext mit dazugehöriger Fehlermeldung.