2009-05-14 8 views
2
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?" 

答えて

5

あなたは長時間寝ています。一番良いのは、一度に1バイトずつ読むことができるようになることです。

#!/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) 
関連する問題