• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

python, verschachteltes IF

Hallo, bei Superkaramba und Python habe ich ein Problem mit der Bedingung, ein Bild abhängig von RAID-Status einzufügen.

Allgemein:

if RAID_Status == [UU]
-> zeig Symbol grün
else
-> rot

relevante Abschnitte (ich weiss mittlerweile, dass cat useless ist und werde es überarbeiten)

Code:
# number of RAID-Arrays ['md0', 'md1',.....]
NumberOfRAIDS=os.popen("cat /proc/mdstat |awk '{ print $1}'|grep md").read().split()
.
.
.

    texty=0
    
#for each RAID Array...    
    for RAIDS in NumberOfRAIDS:
	
#...set the RAID Box and show name of this RAID Array (mdX)...	
	#box
	karamba.createImage(widget, 72, Base_y_RAID+35, RAID_Box)
	#RAID name
	RAID = karamba.createText(widget, 75, Base_y_RAID+35+texty, 140,40, RAIDS)
        karamba.changeTextColor(widget, RAID, Red_Topic, Green_Topic, Blue_Topic)
        karamba.changeTextSize(widget,RAID,18)
        
    
        
#...and set RAID icons and Infos in boxes
	if "md" in RAIDS:
	 RAID_Devices_Title_Text=karamba.createText(widget, 120, Base_y_RAID+35+texty, 140,40, 'RAID Devices:')
	 karamba.changeTextColor(widget, RAID_Devices_Title_Text, Red_Topic, Green_Topic, Blue_Topic)
	 RAID_Devices_Typ=os.popen("cat /proc/mdstat |grep "+str(RAIDS)+"|sed 's/"+str(RAIDS)+" : //g'|awk '{print $2}'").read()
	 RAID_Devices=os.popen("cat /proc/mdstat |grep "+str(RAIDS)+"|sed 's/"+str(RAIDS)+" : //g'|awk '{print $3,$4,$5,$6}'").read()
	 RAID_Devices_Text=karamba.createText(widget, 120, Base_y_RAID+45+texty, 200,40, RAID_Devices)
	 karamba.changeTextColor(widget, RAID_Devices_Text, Red_Topic, Green_Topic, Blue_Topic)
	 RAID_Devices_Title_Typ_Text=karamba.createText(widget, 120, Base_y_RAID+55+texty, 140,40, 'Typ: ')
	 karamba.changeTextColor(widget, RAID_Devices_Title_Typ_Text, Red_Topic, Green_Topic, Blue_Topic)
	 RAID_Devices_Typ_Text=karamba.createText(widget, 160, Base_y_RAID+55+texty, 140,40, RAID_Devices_Typ)
	 karamba.changeTextColor(widget, RAID_Devices_Typ_Text, Red_Topic, Green_Topic, Blue_Topic)
	 RAID_Chunk=os.popen("cat /proc/mdstat |grep "+str(RAIDS)+" -A2|awk '/chunk/{print $5}'").read()
	 RAID_Chunk_Title_Text=karamba.createText(widget, 120, Base_y_RAID+66+texty, 140,40, 'Chunk:')
	 karamba.changeTextColor(widget, RAID_Chunk_Title_Text, Red_Topic, Green_Topic, Blue_Topic)
	 RAID_Chunk_Text=karamba.createText(widget, 160, Base_y_RAID+66+texty, 140,40, RAID_Chunk)
	 karamba.changeTextColor(widget, RAID_Chunk_Text, Red_Topic, Green_Topic, Blue_Topic)
	 RAID_Status=os.popen("cat /proc/mdstat |grep "+str(RAIDS)+" -A1|awk '/blocks/{print $8}'").read()
	 RAID_Status_Title_Text=karamba.createText(widget, 120, Base_y_RAID+76+texty, 140,40, 'Status:')
	 karamba.changeTextColor(widget, RAID_Status_Title_Text, Red_Topic, Green_Topic, Blue_Topic)
	 RAID_Status_Text=karamba.createText(widget, 160, Base_y_RAID+76+texty, 140,40, RAID_Status)
	 karamba.changeTextColor(widget, RAID_Status_Text, Red_Topic, Green_Topic, Blue_Topic)
	 
#check RAID and show warning symbol
	 #if os.popen("cat /proc/mdstat |grep "+str(RAIDS)+" -A1|awk '/blocks/{print $8}'").read() == "[UU]" :
	 #karamba.createImage(widget, 80, Base_y_RAID+65, "img/RAIDok.png")
	 #else:
	 #karamba.createImage(widget, 80, Base_y_RAID+65, "img/RAIDnotok.png")  
	
	RAID_list.append(RAID)


Wieso funktioniert DAS nicht?
Code:
#check RAID and show warning symbol
	 #if os.popen("cat /proc/mdstat |grep "+str(RAIDS)+" -A1|awk '/blocks/{print $8}'").read() == "[UU]" :
	 #karamba.createImage(widget, 80, Base_y_RAID+65, "img/RAIDok.png")
	 #else:
	 #karamba.createImage(widget, 80, Base_y_RAID+65, "img/RAIDnotok.png")
 
IndentationError: expected an indented block (vielleicht?)
Aus deinem Code im Kommentar ist es nicht (mehr) ersichtlich.

Richtig wäre:
Code:
if blabla:
    Anweisung ....
    Anweisung ...
# hier darf keine Anweisung stehen    
    # aber hier möglich
else:
# hier darf keine Anweisung stehen
    # aber hier 
    Anweisung ........
 
Kann zudem auch sein, daß Dein string noch ein "\n" am Ende enthält. Das müßtest Du mit "string.rstrip("\n")" abschneiden.
 
Oben