Subprocess module: running an interactive shell

Roman Medina-Heigl Hernandez roman at rs-labs.com
Fri Mar 13 21:39:47 EDT 2009


Hi,

I'm experimenting with Python and I need a little help with this. What I'd
like is to launch an interactive shell, having the chance to send first
several commands from python. I've written the following code:

=============

#!/usr/bin/env python

import sys, subprocess

exe = "/bin/sh"
params = "-i"

proc = subprocess.Popen([exe, params], stdin=subprocess.PIPE)

proc.stdin.write("id\n")

while True:
        line = sys.stdin.readline()
        if not line:
                break
        proc.stdin.write(line)

sys.exit()

=============

The problem is that when I launch it, python proggy is automatically
suspended. The output I got is:

roman at rslabs:~/pruebas$ ./shell.py
roman at rslabs:~/pruebas$ uid=1000(roman) gid=1000(roman) groups=1000(roman)
roman at rslabs:~/pruebas$

[2]+  Stopped                 ./shell.py
roman at rslabs:~/pruebas$

Why and how to fix it? Would you suggest a better and more elegant way to
do what I want?

Thank you.

-- 

Saludos,
-Roman

PGP Fingerprint:
09BB EFCD 21ED 4E79 25FB  29E1 E47F 8A7D EAD5 6742
[Key ID: 0xEAD56742. Available at KeyServ]



More information about the Python-list mailing list