views:

116

answers:

1

Hello everybody, I'd like to write a wrapper for an interactive CLI Program (the Asterisk CLI).

Basically, I need to keep the interaction with the CLI (including tab-completion) but I want to filter the output of Asterisk, in order to show only lines matching a given pattern.

I tried a select() based approach, using popen.popen4 and putting asterisk stdout_and_stderr and sys.stdin in the read_fs, but it sort of didn't work.

Can anyone give some good pointers to me?

Thanks a lot, Andrea

+4  A: 

Pexpect might be useful for you: http://sourceforge.net/projects/pexpect/

Description from the webpage: "Pexpect is a Python module for spawning child applications; controlling them; and responding to expected patterns in their output. Pexpect can be used for automating interactive applications such as ssh, ftp, passwd, telnet, etc. Pexpect is pure Python."

Filip Korling
`pexpect` will fix all the irritating buffering problems the OP has been having and would be my choice for this problem.
Nick Craig-Wood