Я пытаюсь управлять интерактивным сеансом ssh из Python, поэтому не запускаю команду ssh user@host (на которую есть множество ответов), а ssh user@host< /code> затем запись/чтение из этого сеанса ssh из Python.
работает, если есть одна строка данных, но proc.stdout не возвращает '', если она пуста, поэтому невозможно прочитать ее, а если данных нет, она блокируется
и poll всегда говорят, что proc.stdout «готов» для чтения, независимо от того, будет ли proc.stdout.readline() работать на самом деле.
Есть предложения?
Изменить: здесь код python2.7, но решения для python3 будут тоже все будет хорошо.
Редактировать: используя proc.communicate() здесь не подходит, так как он ожидает завершения процесса, и я хочу продолжать читать/записывать в него.
Я пытаюсь управлять интерактивным сеансом ssh из Python, поэтому не запускаю команду ssh user@host (на которую есть множество ответов), а ssh user@host< /code> затем запись/чтение из этого сеанса ssh из Python.
[list] [*][code]proc.stdout.readlines()[/code] не работает, поскольку никогда не возвращает EOF, поэтому блокируется [*][code]proc.stdout.readline()[/code] работает, если есть одна строка данных, но proc.stdout не возвращает '', если она пуста, поэтому невозможно прочитать ее, а если данных нет, она блокируется [*][code]select[/code] и poll всегда говорят, что proc.stdout «готов» для чтения, независимо от того, будет ли proc.stdout.readline() работать на самом деле. [/list]
Есть предложения?
Изменить: здесь код python2.7, но решения для python3 будут тоже все будет хорошо. Редактировать: используя proc.communicate() здесь не подходит, так как он ожидает завершения процесса, и я хочу продолжать читать/записывать в него.