Den Rückgabewert einer Shell-Abfrage weiter verwenden?

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
ivka_sto
User
Beiträge: 63
Registriert: Dienstag 11. Dezember 2007, 23:13

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
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Wenn du Stdout lesen willst, dann solltest du dir das Modul subprocess ansehen. Beispiele gibt es hier im Forum mehr als genug.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
ivka_sto
User
Beiträge: 63
Registriert: Dienstag 11. Dezember 2007, 23:13

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
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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.

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
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.
ivka_sto
User
Beiträge: 63
Registriert: Dienstag 11. Dezember 2007, 23:13

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 :)
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Du könntest dir vielleicht eine lokale installation erstellen, siehe: [wiki]SSH installation[/wiki]

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
ivka_sto
User
Beiträge: 63
Registriert: Dienstag 11. Dezember 2007, 23:13

@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
BlackJack

Sehr wahrscheinlich ja. Wie sieht denn `executable` aus und gibt es die Datei wirklich!?
ivka_sto
User
Beiträge: 63
Registriert: Dienstag 11. Dezember 2007, 23:13

Nee, das krieg ich zurück wenn ich nur den Code kompiliere, der mir die subprocess-Fkt. zusätzlich zur Verfügung stellen soll ..
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Wenn eine Datei gestartet werden soll, die im Pfad ist, hilft evtl. shell=True oder man gibt den ganzen Pfad zu Datei an...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten