Para executar um script de shell no python 2.6, use o módulo commands
:
import commands
status, output = commands.getstatusoutput("./script.sh")
status
agora é o status do seu programa, esperamos que 0
. A saída é a mesma que se o script fosse executado assim:
{ cmd ; } 2>&1
Em python3, o método getstatusoutput foi movido para o subprocesso,
import subprocess
status, output = subprocess.getstatusoutput("./script.sh")
Por favor, consulte:
Na documentação da biblioteca padrão.
Existem mais maneiras de gerar subprocessos, e você precisa avaliar qual deles é o método correto no seu caso. Consulte os documentos subprocesso para ler sobre eles.
Uma maneira ainda melhor de executar seu script é:
from subprocess import Popen, PIPE
output = Popen(["sh", "script.sh", ], stdout=PIPE).communicate()[0]
Ele funcionará no python 2.6, 2.7, 3.1 e 3.2.
Note que você não pode usar o script de shell neste método, se você quiser canalizar a saída, use este método:
p1 = Popen(["dmesg"], stdout=PIPE)
p2 = Popen(["grep", "hda"], stdin=p1.stdout, stdout=PIPE)
output = p2.communicate()[0]
Considerando que o módulo de comandos aceitará "dmesg | grep hda"