Übergabe von Parametern

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
davix
User
Beiträge: 5
Registriert: Sonntag 25. November 2012, 11:47

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
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

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.
Das Leben ist wie ein Tennisball.
davix
User
Beiträge: 5
Registriert: Sonntag 25. November 2012, 11:47

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!
davix
User
Beiträge: 5
Registriert: Sonntag 25. November 2012, 11:47

Niemand eine Idee oder Hilfestellung?
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.
davix
User
Beiträge: 5
Registriert: Sonntag 25. November 2012, 11:47

Hi Lunar,
das ist mein Code, der nicht funktioniert:
http://pastebin.com/s8BH0N1W

Danke für die Hilfe!

Grüße
davix
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

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.
Das Leben ist wie ein Tennisball.
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

Zudem ist die Definition von HOSTS auskommentiert. Was die erste Fehlermeldung auch besagt.
davix
User
Beiträge: 5
Registriert: Sonntag 25. November 2012, 11:47

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
lunar

@davix Verschwende doch bitte nicht unsere Zeit, und zeige Quelltext mit dazugehöriger Fehlermeldung.
Antworten