2010-09-19 34 views
8

Je suis étonné par la façon dont Expect (TCL) peut automatiser beaucoup de choses que je ne pouvais normalement pas faire.Autres solutions/langages supérieurs à l'attendu TCL?

Je pensais que je pourrais plonger plus profondément dans Expect en lisant un livre, mais avant de le faire je voudrais demander s'il y a d'autres solutions/langages qui pourraient faire ce que fait Expect?

Par exemple. J'ai lu que les gens comparent Expect avec Awk et aussi Perl.

Est-ce que Awk et Perl pourraient faire la même chose?

Que diriez-vous d'autres langues comme Python et Ruby?

Attendez-vous à l'outil d'automatisation de facto ou existe-t-il d'autres solutions/langages plus performants?

+0

Je pense que c'est de facto parce que c'était le premier et il était basé sur TCL qui était/était très populaire dans certains cercles, par exemple. des choses intégrées comme les routeurs Cisco. Donc si vous connaissiez déjà TCL pour configurer le routeur, pourquoi ne pas utiliser un framework d'automatisation compatible? –

+4

Attendez est devenu la norme dans de telles choses. Vous pouvez trouver des implémentations Expect comme indiqué dans les réponses, mais je doute que vous trouverez quelque chose _superior_. –

+1

Pas "un" livre, "le" livre. Le [Expect book] (http://oreilly.com/catalog/9781565920903) reste très bien considéré, bien que ce qu'il dit à propos de Tcl soit quelque peu obsolète. (Eh bien, qu'attendez-vous pour un livre sur un logiciel informatique qui est si vieux?) –

Répondre

9

Il y a plus à lui.

Franchement, l'Expect originale - la Tcl Expect - est la meilleure. Il supporte mieux "interagir" et diverses excentricités pty que n'importe lequel de ses successeurs. Il n'a pas de supérieur, pour ce qu'il fait. Cependant, en même temps, la plupart des utilisateurs d'Expect exploitent une si petite partie des capacités d'Expect que cette supériorité technique leur est indifférente. Dans presque tous les cas, je conseille à quelqu'un venant de Perl d'utiliser Expect.pm, quelqu'un de familier avec Python pour s'appuyer sur Pexpect, et ainsi de suite.

Les comparaisons naïves de Perl avec "... Awk et aussi Perl" sont mal fondées. En résumé, tous les langages de script courants - Lua, awk, sh, Tcl, Ruby, Perl, Python, ... - sont à peu près les mêmes. Attendez-vous un peu mais étend très efficacement ce tronc commun dans le sens de la conscience de pty (il y a un peu plus à l'histoire que nous pouvons négliger pour le moment). Grosso modo, si votre automatisation implique la saisie d'un mot de passe invisible, vous voulez attendre. Awk et Perl ne construisent pas dans cette capacité.

Il existe d'autres outils d'automatisation pour d'autres contextes.

+0

De quels autres outils d'automatisation parlez-vous? –

+0

"Lua, awk, sh, Tcl, Ruby, Perl, Python, ... sont à peu près les mêmes" mon opinion personnelle est que vous devez être hors de votre esprit pour comparer les langues à part entière comme Lua, Ruby et Python avec awk et sh. – aaronasterling

+1

@Aaron: Je vois que vous n'avez pas regardé en détail la folie délirante qui est 'autoconf' ... (Ils sont tous de vrais langages de programmation - pas seulement complets, mais aussi utilisés dans le monde réel - mais ils ont différentes opérations de base et différents domaines d'application.) –

2

Découvrez Pexpect pour Python

+0

Semble non maintenu pendant 2,5 année –

7

Check out Expect pour Perl

+0

On pourrait argumenter que l'implémentation de perl n'est pas supérieure en soi, juste en fonction. –

4

ajsie demande: «De quels autres outils d'automatisation parlez-vous?

Je vais répondre à une question différente: «quels autres contextes ai-je en tête»? La réponse: tout environnement interactif AUTRE qu'un stdio. L'attente n'est PAS pour l'automatisation des points-et-clics de l'interface graphique, par exemple. Expect n'est également pas disponible pour les applications non-console Win *, même si elles semblent orientées sur les caractères (telles qu'elles existent).

Une contre-réalisation passionnante: Expect est pour l'automatisation de l'équipement loufoque qui permet le contrôle par une connexion de type terme. Si votre moteur diesel (ou, plus généralement, le fer télécomm) indique qu'il peut être surveillé en connectant un processus de type telnet (même à travers une ancienne ligne série, par exemple), vous êtes dans un domaine où Expect a une chance travailler sa magie.