Как отправить EOF в stdin в парамико?
Я хотел бы выполнить некоторую программу через ssh и перенаправить ее вход из файла. Поведение следующего кода:
channel.exec_command('cat')
with open('mumu', 'r') as f:
text = f.read()
nbytes = 0
while nbytes < len(text):
sent = channel.send(text[nbytes:])
if sent == 0:
break
nbytes += sent
Должно быть эквивалентно (предполагая аутентификацию с открытым ключом):
ssh user@host cat < mumu
Однако приложение зависает в ожидании дополнительных входных данных. Я думаю, это происходит потому, что поток stdin никогда не закрывается. Как мне это сделать?
2 ответа:
Вызов
shutdown()
(илиshutdown_write()
) на канале.