How to wrap a CLI program in Python (keeping the interactivity)?
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开发者_JAVA技巧 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
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."
http://code.google.com/p/py-asterisk/
Introduction
The Python Asterisk package (codenamed py-Asterisk) is an attempt to produce high quality, well documented Python bindings for the Asterisk Manager API.
The eventual goal of the package is to allow rich specification of the Asterisk configuration in Python rather than in the quirky, unstructured, undocumented mess that we call the Asterisk configuration files.
Working Functionality
Python package implementing a manager client and event dispatcher. User-oriented command line interface to manager API.
精彩评论