Fehler in Skript - Anfänger

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.
mro
User
Beiträge: 2
Registriert: Montag 5. November 2007, 16:47

Fehler in Skript - Anfänger

Beitragvon mro » Montag 5. November 2007, 17:02

Hallo, da ich mich vorher NIE mit der Python Programmierung auseinandergesetzt habe sondern nur c++ und vb, komme ich hier nicht mehr alleine weiter.

Ich habe ein Skript, welches für eine automatische betriebssysteminstallation dienen sol, bzw die Partitionen festlegen soll.

Bei bleibt es in Zeile 54 stehen, bei dem else, ich weiß nicht was der Fehler ist. Vielleicht könnt Ihr das skript mal auf fehler Prüfen, das wäre supper...

DANKE schonmal

Code: Alles auswählen

target = '/mnt/hd'
source = DEPOT_MOUNT + '/install/winxppro'
hwFilename = DEPOT_MOUNT + "/pcpatch/pclog/" + hostname + ".hw"
srcDriversDir = DEPOT_MOUNT + '/install/winxppro/drivers'
 
# Do hardware inventory
hardware = hardwareInventory(filename = hwFilename)
 
###################################################################################
### Modifikation
###################################################################################
 
# Get first harddisk
KB=1000
MB=1000*1000
GB=1000*1000*1000
 
disks = getHarddisks()
disk = disks[0]
disksize = disk.size - KB
partitions = disk.getPartitions()
 
# Disksize <= 2GB
# => Platte zu klein => exit
if (disksize <= 2*GB):
    raise Exception("Die Festplatte ist kleiner als 2GB!\n")
 
# 2GB < Disksize <= 6GB
# => erstelle 1 Partition über die gesamte Platte
elif (2*GB < disksize) and (disksize <= 6*GB):
    if not partitions: 4
ui.getMessageBox().addText("Es wird eine Partition über die gesamte Platte erstellt!\n")
disk.deletePartitionTable()
disk.createPartition(start="0%", end="100%", fs="fat32", boot=True)
disk.createFilesystem(partition=1, fs="fat32") 
        #else:
        partition = partitions[0]
partend = str(int((partition['end'] / (1024*1024)) - 1)) + "M"
ui.getMessageBox().addText('Ende Partition 1: %s\n' % (partend))
ui.getMessageBox().addText("Partition 1 wird neu erstellt\n") 
disk.deletePartition(partition=1)
disk.createPartition(start="0%", end=partend, fs="fat32", boot=True)
disk.createFilesystem(partition=1, fs="fat32")
 
# 6GB < Disksize <= 15GB
# => 2 Partitionen: 1. 6GB, 2. Rest
elif (6*GB < disksize) and (disksize <= 15*GB):
if not partitions:
ui.getMessageBox().addText("Es werden zwei Partition erstellt!\n1. Partition: 6GB, 2. Partition: Rest\n") 
disk.deletePartitionTable()
disk.createPartition(start="0M", end="6000M", fs="fat32", boot=True)
disk.createFilesystem(partition=1, fs="fat32") 
disk.createPartition(start="6001M", end="100%", fs="ntfs", boot=False)
else:
partition = partitions[0]
partend = str(int((partition['end'] / (1024*1024)) - 1)) + "M"
ui.getMessageBox().addText('Ende Partition 1: %s\n' % (partend))
ui.getMessageBox().addText("Partition 1 wird neu erstellt\n") 
disk.deletePartition(partition=1)
disk.createPartition(start="0%", end=partend, fs="fat32", boot=True)
disk.createFilesystem(partition=1, fs="fat32")
 
# Disksize > 15GB
# 2 Partitionen: 1. 40%, 2. 60%
else:
if not partitions:
ui.getMessageBox().addText("Es werden zwei Partition erstellt!\n1. Partition: 40%, 2. Partition: 60%\n") 
disk.deletePartitionTable()
disk.createPartition(start="0%", end="40%", fs="fat32", boot=True)
disk.createFilesystem(partition=1, fs="fat32") 
disk.createPartition(start="41%", end="100%", fs="ntfs", boot=False)
else:
partition = partitions[0]
partend = str(int((partition['end'] / (1024*1024)) - 1)) + "M"
ui.getMessageBox().addText('Ende Partition 1: %s\n' % (partend))
ui.getMessageBox().addText("Partition 1 wird neu erstellt\n")
ui.getMessageBox().addText("\nSchritt 1: Loesche alte Partition\n") 
disk.deletePartition(partition=1)
ui.getMessageBox().addText("\nSchritt 2: Erstelle neue Partition\n") 
disk.createPartition(start="0%", end=partend, fs="fat32", boot=True)
ui.getMessageBox().addText("\nSchritt 3: Formatiere Partition\n") 
disk.createFilesystem(partition=1, fs="fat32")
 
 
 
 
###################################################################################
### Modifikation ende
###################################################################################
 
# Write Master Boot Record
disk.writeMasterBootRecord(system='auto')
 
# Write Partition Boot Record
disk.writePartitionBootRecord(partition=1, fsType='fat32')
 
# Mount partition 1
disk.mountPartition(partition=1, mountpoint=target)
 
# Copy DOS files
copy('/dos/*', target)
 
# Copy Windows installation files
copy(source + '/i386', target)
 
# Copy OEM files
copy(source + '/opsi/$oem$', target + '/i386')
 
# Copy opsi-preloginloader
copy(DEPOT_MOUNT + '/install/preloginloader/files/*', target)
 
# Integrate drivers
if os.path.exists(srcDriversDir):
ui.getMessageBox().addText("Treiber-Verzeichnis gefunden, versuche Treiber einbzubinden.\n")
oemPnpDriversPath = ''
driverNumber = 0
for (key, info) in hardware.items():
name = info.get('name', '???')
name = name.replace('/', '_')
vendorId = info.get('vendorId', '').upper()
deviceId = info.get('deviceId', '').upper()
if not vendorId or not deviceId:
continue
logger.info("Searching driver for device '%s', id '%s:%s'" % (name, vendorId, deviceId))
ui.getMessageBox().addText(" * Suche Treiber fuer '%s'.\n" % name)
srcDriverPath = os.path.join(srcDriversDir, 'pciids', vendorId)
if not os.path.exists(srcDriverPath):
logger.error("Vendor directory '%s' not found" % srcDriverPath)
ui.getMessageBox().addText(" [Fehler] Hersteller-Verzeichnis '%s' nicht gefunden.\n" % vendorId)
continue
srcDriverPath = os.path.join(srcDriverPath, deviceId)
if not os.path.exists(srcDriverPath):
logger.error("Device directory '%s' not found" % srcDriverPath)
ui.getMessageBox().addText(" [Fehler] Geraete-Verzeichnis '%s' nicht gefunden.\n" % deviceId)
continue
logger.notice("Found driver for device '%s', in dir '%s'" % (name, srcDriverPath))
ui.getMessageBox().addText(" [OK] Treiber gefunden, wird eingebunden.\n")
driverNumber += 1
if not os.path.exists( os.path.join(target, 'drv') ):
os.mkdir( os.path.join(target, 'drv') )
if not os.path.exists( os.path.join(target, 'drv', str(driverNumber)) ):
os.mkdir( os.path.join(target, 'drv', str(driverNumber)) )
copy( srcDriverPath + '/*', os.path.join(target, 'drv', str(driverNumber)) )
if oemPnpDriversPath:
oemPnpDriversPath += ';'
oemPnpDriversPath += '\\'.join(['drv', str(driverNumber)])
 
pi = open(PATCHA_IN, 'a')
print >> pi, "oempnpdriverspath=%s" % oemPnpDriversPath
pi.close()
 
# Create autoexec.bat
f = open(target + '/autoexec.bat', 'w')
print >> f, "smartdrv.exe\r"
print >> f, "call deldos.bat\r"
print >> f, "rm deldos.bat\r"
print >> f, "c:\i386\winnt /s:C:\i386 /u:C:\i386\$oem$\unattend\unattend.txt\r"
f.close()
 
# Patch files
for i in ( target + '/i386/\$oem\$/unattend/unattend.txt', target + '/opsi/cfg/pxecfg.ini' ):
execute('/usr/local/bin/patcha %s' % i)
execute('/usr/local/bin/patcha -f %s %s' % (PATCHA_IN, i))
 
# copy sysconf.ini to C:\opsi\cfg
copy (SYSCONF_INI , target + '/opsi/cfg')
 
# Umount partition
disk.umountPartition(partition=1)
 
# Reboot
reboot()
Zap
User
Beiträge: 533
Registriert: Freitag 13. Oktober 2006, 10:56

Beitragvon Zap » Montag 5. November 2007, 17:10

Pythoncode funktiert nur mit richtiger Einrückung.

Code: Alles auswählen

if True:
    print "Hallo"

Dein Code hat an einigen Stellen keine. Wenn das bei deinem Original auch der Fall ist ist das der Grund.
mro
User
Beiträge: 2
Registriert: Montag 5. November 2007, 16:47

Beitragvon mro » Montag 5. November 2007, 17:16

Hallo Zap, danke für deine zügige Antwort,

ja das habe ich schon mitbekommen mit der einrückung, mitlerweile habe ich eine leerzeile for das else in zeile 54 gesetzt und nun bekomme ich die Meldung, "invalid syntax"

komme da leider nicht so weiter!
BlackJack

Beitragvon BlackJack » Montag 5. November 2007, 17:40

Eine Leerzeile nützt da nichts; Du musst korrekt einrücken. Was/Wieviel korrekt ist, kann man so generell nicht sagen, das ergibt sich aus der Bedeutung die das Ganze haben soll.

Wer ist online?

Mitglieder in diesem Forum: Bananasplit, Bing [Bot]