在Python中的两个PTY之间传递数据和控制

时间:2018-09-28 15:39:15

标签: python pty

我编写了一个脚本,该脚本在附加到新PTY的子进程中启动SSH,我想在附加到脚本stdi / o的原始终端与该子进程的PTY之间传递所有数据和终端控件,以进行交互式控制SSH会话,可以检查和/或修改脚本中的数据。

我设法成功传递数据,但不能控制字符,这破坏了像Vim这样的TUI应用程序。有示例如何在两个PTY之间传递终端控制吗?还是有更好的方法?这是我现在拥有的简化代码段:

master, slave = pty.openpty()
p = subprocess.Popen(['ssh', 'example.com'], stdin=slave, stdout=slave, stderr=slave)

streams = {
        sys.stdin.fileno(): master,
        master: sys.stdout.fileno(),
        }

while True:
    readlist = list(streams.keys())
    (rtr, rtw, err) = select.select(readlist, [], readlist, 1.0)
    for inp in rtr:
        outp = streams[inp]
        data = os.read(inp, 4096)
        # ... inspect or modify data here ...
        os.write(outp, data)

0 个答案:

没有答案