On Mar 13, 6:39 pm, Roman Medina-Heigl Hernandez <ro...@rs-labs.com> wrote: > 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"
-i says shell to be interactive. So looks like it is directly trying to read from the terminal. > > proc = subprocess.Popen([exe, params], stdin=subprocess.PIPE) proc = subprocess.Popen([exe,], stdin=subprocess.PIPE) works for me; but if there is an error 'sh' terminates. If you want to simulate interactive, explore the pexpect module. > > proc.stdin.write("id\n") > > while True: > line = sys.stdin.readline() > if not line: note that a simple enter terminates the shell which you may not want. > 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: > > ro...@rslabs:~/pruebas$ ./shell.py > ro...@rslabs:~/pruebas$ uid=1000(roman) gid=1000(roman) groups=1000(roman) > ro...@rslabs:~/pruebas$ > > [2]+ Stopped ./shell.py > ro...@rslabs:~/pruebas$ > > Why and how to fix it? Would you suggest a better and more elegant way to > do what I want? As I see it, 'sh' is attempting to read from the keyboard and not from stdin. Karthik > > Thank you. > > -- > > Saludos, > -Roman > > PGP Fingerprint: > 09BB EFCD 21ED 4E79 25FB 29E1 E47F 8A7D EAD5 6742 > [Key ID: 0xEAD56742. Available at KeyServ] -- http://mail.python.org/mailman/listinfo/python-list