Seite 1 von 1
Den Rückgabewert einer Shell-Abfrage weiter verwenden?
Verfasst: Donnerstag 24. April 2008, 13:47
von ivka_sto
Hallo,
Ich habe leider im Netz kene Hinweise gefunden, die mich nicht noch mehr verwirrt haben .. also die Frage an euch:
Ich will im Code eine Linux-Einstellung über den Shell abfragen (den Status der Core-Dump-Generierung [ulimit -c]), und ggfs die Core-Generierung ausschalten. Also mach ich das so
Code: Alles auswählen
if os.system('ulimit -c') != 0:
print 'To turn off CoreDump: type in shell ulimit -c 0'
Was natürlich nicht geht. "a = os.system('ulimit -c')" geht auch nicht. Ich vermute, das wird mit stdout zu lösen sein, aber ich habe keinen Beispiel gefunden, der in einer ähnlichen Richtung geht.
Weiß vllt jemand was?
VG, ivka_sto
Verfasst: Donnerstag 24. April 2008, 13:58
von Leonidas
Wenn du Stdout lesen willst, dann solltest du dir das Modul subprocess ansehen. Beispiele gibt es hier im Forum mehr als genug.
Verfasst: Donnerstag 24. April 2008, 14:11
von ivka_sto
Gerade weil ich so viele Bsp mit subprocess gefunden habe, komm ich nicht klar: Ich hab leider nur Python 2.3 drauf, subprocess gibt's erst ab 2.4. Unterschiede gibt's genung, mit popen kann man z.B. kein Shell-Attribut setzen usw.
VG
Verfasst: Donnerstag 24. April 2008, 14:17
von jens
subprocess ist pure Python. Du kannst es einfach kopieren und nutzten
EDIT: Also hier ist die Datei, direkt aus dem trunk:
http://svn.python.org/view/python/trunk ... iew=markup
Einfach zu dem Skript kopieren und normal benutzten. Sollte gehen, aus dem DocString:
This module should remain compatible with Python 2.2, see PEP 291.
Verfasst: Donnerstag 24. April 2008, 14:30
von lunar
Und nach Möglichkeit auf 2.5 wechseln, Python 2.3 wird schon lange nicht mehr unterstützt, was schon beträchtliche Sicherheitsbedenken nach sich ziehen muss.
Verfasst: Donnerstag 24. April 2008, 14:35
von ivka_sto
Kann ich leider nicht, ich mach es nicht zu Hause und muß mich in das gemeinsame Linux-System einloggen .. und dann kann ich ja nichts nachinstallieren
Danke für die Hilfe allerseits

Verfasst: Donnerstag 24. April 2008, 14:53
von jens
Du könntest dir vielleicht eine lokale installation erstellen, siehe: [wiki]SSH installation[/wiki]
Verfasst: Donnerstag 24. April 2008, 16:11
von ivka_sto
@jens: Hab ich etwa was falsch gemacht, wenn ich beim Ausführen die Fehlermeldung
Process list:
PID TTY TIME CMD
14568 pts/3 00:00:00 bash
14584 pts/3 00:00:00 python
14585 pts/3 00:00:00 ps
Looking for 'hda'...
' ide0: BM-DMA at 0x1000-0x1007, BIOS settings: hda:DMA, hdb:pio\nhda: ST3200822A, ATA DISK drive\nhda: max request size: 1024KiB\nhda: 390721968 sectors (200049 MB) w/8192KiB Cache, CHS=24321/255/63, UDMA(100)\nhda: cache flushes supported\n hda: hda1 hda2\nhda: drive_cmd: status=0x51 { DriveReady SeekComplete Error }\nhda: drive_cmd: error=0x04 { DriveStatusError }\nhda: task_no_data_intr: status=0x51 { DriveReady SeekComplete Error }\nhda: task_no_data_intr: error=0x04 { DriveStatusError }\n'
Trying a weird file...
The file didn't exist. I thought so...
Child traceback:
Traceback (most recent call last):
File "./STATE4.py", line 727, in _execute_child
os.execvp(executable, args)
File "/usr/lib64/python2.3/os.py", line 336, in execvp
_execvpe(file, args)
File "/usr/lib64/python2.3/os.py", line 362, in _execvpe
func(file, *argrest)
OSError: [Errno 2] No such file or directory
zurückbekomme?
VG
Verfasst: Donnerstag 24. April 2008, 21:08
von BlackJack
Sehr wahrscheinlich ja. Wie sieht denn `executable` aus und gibt es die Datei wirklich!?
Verfasst: Donnerstag 24. April 2008, 21:17
von ivka_sto
Nee, das krieg ich zurück wenn ich nur den Code kompiliere, der mir die subprocess-Fkt. zusätzlich zur Verfügung stellen soll ..
Verfasst: Freitag 25. April 2008, 14:32
von jens
Wenn eine Datei gestartet werden soll, die im Pfad ist, hilft evtl. shell=True oder man gibt den ganzen Pfad zu Datei an...