Seite 1 von 1

subprocess call verhält sich anders als aufruf in der shell

Verfasst: Dienstag 22. Januar 2013, 11:56
von .robert
Hi,

ich habe ein bashscript über das ich mails mit anhang sende und welches ich mit ein paar Parametern aufrufen muss.
Setze ich den Befehl direkt in der Shell ab, funktioniert alles ohne probleme, rufe ich es aus einem Python-Script per subprocess.call auf, kommt der Anhang nicht mit, und ich bekomme eine komische fehlermeldung, eine mail wird aber gesendet.

Kann mir vielleicht jemand auf die Sprünge helfen?

Code: Alles auswählen

#! /usr/local/bin/python

import subprocess

mlsnd = ' '.join([
    '/home/***/bin/mail2.sh',
    '***@***.de',
    '***@***.de',
    '"Betreff"',
    '"see attachment for details"',
    '"***.csv"'
])

mlsnd = ' '.join(mlsnd)
print mlsnd
subprocess.call(mlsnd, shell=True)

Code: Alles auswählen

[***@*** ~/***]$ python mailtest.py
/home/***/bin/mail2.sh ***@***.de ***@***.de "Betreff" "see attachment for details" "***.csv"
[[: not found
[***@*** ~/***]$ /home/***/bin/mail2.sh ***@***.de ***@***.de "Betreff" "see attachment for details" "***.csv"
[***@*** ~/***]$

Re: subprocess call verhält sich anders als aufruf in der sh

Verfasst: Dienstag 22. Januar 2013, 12:26
von sparrow
Wie wäre es mit der Alternative das ganze direkt in Python zu machen?
Such hier mal nach simplemail.py. Das ist ein kleines Script zum recht einfachen versenden von Mails.

Ganz nebenbei: subprocess erwartet ein tuple als Anweisung. Eben genau das, was du mit dem " ".join() vorher kaputt machst.

Re: subprocess call verhält sich anders als aufruf in der sh

Verfasst: Dienstag 22. Januar 2013, 12:38
von .robert
ja, über simplemail.py funktionert es, super danke! :D

Trotzdem würde es mich natürlich interessieren, was das problem mit subprocess ist...

Re: subprocess call verhält sich anders als aufruf in der sh

Verfasst: Dienstag 22. Januar 2013, 13:20
von sparrow
Wie geschrieben: subprocess braucht ein tuple.

subprocess.call(["ls", "-la", "/"])
Subprocess quotet dadurch automatisch. Versuch ob es damit geht.

Re: subprocess call verhält sich anders als aufruf in der sh

Verfasst: Dienstag 22. Januar 2013, 13:27
von .robert
Hatte ich natürlich schon erfolglos probiert. Die Doku zeigt aber dass es auch anders geht: http://docs.python.org/2.7/library/subp ... -os-system

Re: subprocess call verhält sich anders als aufruf in der sh

Verfasst: Dienstag 22. Januar 2013, 13:35
von sparrow
Und ohne shell=True?

Re: subprocess call verhält sich anders als aufruf in der sh

Verfasst: Dienstag 22. Januar 2013, 13:52
von .robert
als Tuple:

Code: Alles auswählen

OSError: [Errno 8] Exec format error
als String

Code: Alles auswählen

OSError: [Errno 2] No such file or directory
Ist jetzt aber auch doch egal, ich habe das script schon auf simplemail.py umgebaut und es läuft. 8)

Danke nochmals.