Python os.forkpty why can't I get it to work

import pty import os import sys import time pid, fd = os.forkpty() if pid == 0: # Slave os.execlp("su","su","MYUSERNAME","-c","id") # Master print os.read(fd, 1000) os.write(fd,"MYPASSWORD\n") time.sleep(1) print os.read(fd, 1000) os.waitpid(pid,0) print "Why have I not seen any output from id?" 
+2
python pty
source share
1 answer

You sleep too long. It is best to start reading as soon as you can one byte at a time.

 #!/usr/bin/env python import os import sys pid, fd = os.forkpty() if pid == 0: # child os.execlp("ssh","ssh","hostname","uname") else: # parent print os.read(fd, 1000) os.write(fd,"password\n") c = os.read(fd, 1) while c: c = os.read(fd, 1) sys.stdout.write(c) 
+5
source share

All Articles