У меня есть интерактивная программа, которая запускает stdin и stdout. Мне нужно создать оболочку, которая отправит X в stdin, проверьте, что она печатает Y, а затем перенаправляет stdin и stdout обертки на stdout и stdout программы, так же, как программа будет выполняться напрямую.Как реализовать stdin, stdout-обертку?
Как это реализовать? X и Y могут быть жестко закодированы. Bash? Python?
Редактировать: Я не могу запустить программу дважды. Это должен быть один случай. Вот псевдокод:
def wrap(cmd, in, expected_out):
p = exec(cmd)
p.writeToStdin(in)
out = p.readBytes (expected_out.size())
if (out != expected_out) return fail;
# if the above 4 lines would be absent or (in == "" and out == "")
# then this wrapper would be exactly like direct execution of cmd
connectpipe (p.stdout, stdout)
connectpipe (stdin, p.stdin)
p.continueExecution()
О, ничего себе, я рассматривал линии этого вопроса всего несколько месяцев назад. (Сценарии устройств Cisco ограничены сеансами Telnet ...) Хотелось иметь скрипт для входа (и, возможно, очистки) маршрутизатора, а затем отпустите консоль для меня. +1 к вам. – Thanatos