pty如何和bash交互?

pty如何和bash交互?

想在python里操控bash

[Copy to clipboard] [ - ]
CODE:
#!/usr/bin/env python
import os, pty, time

class pty_Popen:
    def __init__ (self, command, *args):
        self.pid, self.fd = pty.fork ()
        if self.pid == 0:
            os.execv (command, command, args)
        else:
            pass


    def read (self, max_read):
        return os.read (self.fd, max_read)


    def write (self, text):
        return os.write (self.fd, text)


p=pty_Popen("/bin/bash")
p.write("ls --color=always\nexit\n")
print p.read(1024)

但是上面的代码没作用啊?求达人指点一下,如何在python里操控bash呢?
python提供了象popen, popen2之类的函数,还有象subprocess的模块可以使用。参考一下吧。


QUOTE:
原帖由 limodou 于 2008-3-20 08:48 发表
python提供了象popen, popen2之类的函数,还有象subprocess的模块可以使用。参考一下吧。

popen, popen2, subprocess是通过管道和进程交互,一个显著的缺点就是ssh命令的时候无法通过管道输入密码,因为ssh强制读取tty作为输入,而不接受stdin的输入

所以只能用底层的pty模块

还望limodou前辈指教
交互的东东可以参考expect


QUOTE:
原帖由 800long 于 2008-3-27 11:57 发表
交互的东东可以参考expect

expect 的代码如此之长以至于

呵呵~~~应该就是一个原理性的东西

还是不习惯看超长代码~~~