вывод pexpect в другое окно - PullRequest
       33

вывод pexpect в другое окно

3 голосов
/ 10 ноября 2011

Сейчас я работаю в проекте, где тестовый сценарий должен соединять множество (3-10) удаленных компьютеров (SSH и делать некоторые вещи).Я начал использовать pexpect, и это просто как кнопка.Работает нормально.

Я хочу видеть сообщение во время теста.Я знаю, что можно перенаправить журнал на экран.Но в этом случае логи (с другого компьютера) смешанные.Я хотел бы открыть новое окно терминала (или консоль или что-то еще) для каждого нового объекта порождения.В этом случае я мог видеть все сообщения в разных окнах.Кроме того, я хотел бы сохранить возможность spawn.interact () в каждом окне.Я чувствую, что это как-то возможно, но я не знаю как.Я думаю, что какой-то файловый указатель (или канал) должен как-то перейти в новое окно (?) (SecureCRT знает что-то вроде этого, он имеет консольные окна с вкладками и может обращаться к ним отдельно, но это коммерческий продукт)

Или позвольте мне сделать проблему более простой.Если я сделаю это, я смогу открыть новую оболочку в новом окне:

p=Popen(["cygstart", "bash"])

Как я могу читать и писать в эту оболочку из своего скрипта (родителя), чтобы увидеть ее вэто новое окно?

Я был бы очень признателен, если бы один из вас мог указать мне правильное направление.

Достаточно, если вы скажете мне, что читать или найти (в Google) потому что я не нашел никого такого рода проблемы.Окружение Cygwin.

Заранее спасибо

br: drv

1 Ответ

0 голосов
/ 07 марта 2012

Вы пытались использовать параметр logfile?

child = pexpect.spawn('some_command')
mylog = open('/tmp/mylog','w')
child.logfile = mylog

Это автоматически регистрирует все сообщения в файле, включая команды, которые вы вводите после вызова spawn.interact ()

Более подробная информация доступна на веб-сайте: http://pexpect.sourceforge.net/pexpect.html Поискдля 'logfile', чтобы найти соответствующую документацию.

...