2009-10-17 28 views
3

Je voudrais écrire un wrapper pour un programme CLI interactif (la CLI Asterisk).Comment emballer un programme CLI en Python (en gardant l'interactivité)?

Fondamentalement, j'ai besoin de garder l'interaction avec la CLI (y compris l'achèvement de tabulation), mais je veux filtrer la sortie d'Asterisk, afin de montrer uniquement les lignes correspondant à un motif donné.

J'ai essayé une approche basée sur select(), en utilisant popen.popen4 et en mettant astérisque stdout_and_stderr et sys.stdin dans read_fs, mais cela ne fonctionnait pas.

Quelqu'un peut-il me donner de bons conseils?

Merci beaucoup, Andrea

+0

"sorte de ne fonctionne pas". Ce n'est pas utile. Qu'est-ce qui n'a pas fonctionné? Quel problème avez-vous eu? Si vous voulez une réponse spécifique, posez une question spécifique. Avec des détails. –

Répondre

6

pexpect peut vous être utile: http://sourceforge.net/projects/pexpect/

Description à partir de la page Web: « pexpect est un module Python pour les applications de l'enfant de reproduction, de les contrôler et répondre aux tendances attendues Dans leur sortie, Pexpect peut être utilisé pour automatiser des applications interactives telles que ssh, ftp, passwd, telnet, etc. Pexpect est un pur Python. "

+0

'pexpect' va corriger tous les problèmes de tamponnage irritants que le PO a eu et serait mon choix pour ce problème. –

0

http://code.google.com/p/py-asterisk/

Présentation

Le paquet Asterisk Python (nom de code PY-Asterisk) est une tentative de produire des liaisons Python de haute qualité, bien documenté pour l'API Manager Asterisk.

L'objectif final du package est de permettre une spécification riche de la configuration Asterisk en Python plutôt que dans le désordre original, non structuré et non documenté que nous appelons les fichiers de configuration Asterisk.

travail Fonctionnalité

package Python mise en œuvre d'un répartiteur de client de gestionnaire et d'événements. Interface de ligne de commande orientée utilisateur vers l'API de gestion.