Передача данных и контроль между двумя PTY в Python - PullRequest
0 голосов
/ 28 сентября 2018

Я написал скрипт, который запускает SSH в подпроцессе, подключенном к новому PTY, и я хотел бы передать все данные и элементы управления терминалом между исходным терминалом, подключенным к stdi / o скрипта, и PTY подпроцесса для интерактивного управления.сеанса SSH с возможностью проверки и / или изменения данных в сценарии.

Мне удалось успешно передать данные, но не контролировать символы, что нарушает работу приложений TUI, таких как Vim.Есть ли пример, как передать управление терминалом между двумя 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)
...