2016-12-17 3 views
0

J'utilise l'édition Community d'ActiveTcl d'ActiveState sous Windows avec le package Expect installé. J'ai essayé d'écrire mes propres scripts, en téléchargeant certains de différents sites Web, et même en les copiant et en les collant depuis le site Web ActiveState lui-même, mais je rencontre toujours le même problème. Mes scripts peuvent envoyer des commandes parfaitement et configurer les périphériques réseau comme prévu, mais seulement en prenant en sandwich les envois avec des périodes de sommeil. Chaque fois que j'essaie de faire correspondre n'importe quoi avec expect, j'obtiens toujours la même chose (en utilisant exp_internal 1): expect: does "" (spawn_id exp4) correspond au pattern glob "AnyString"? non. Et la même chose pour les expressions régulières: expect: does "" (spawn_id exp4) correspond à l'expression régulière "AnyString"? non. La seule fois où cela semble fonctionner est avec un seul caractère générique: expect: does "" (spawn_id exp4) correspond au modèle glob "*"? oui expect: set expect_out (0, chaîne) "" Attendez: set expect_out (spawn_id) "exp4" Attendez: set expect_out (buffer) "" Mais aucune autre combinaison de caractères génériques, literal ou regex, ne semble fonctionner. J'ai regardé des vidéos et vu des captures d'écran. De ce que je peux espérer s'attendre à devoir itérer chaque personnage jusqu'à ce qu'une correspondance soit trouvée, mais cela s'arrête littéralement à "", expire, et continue jusqu'à la ligne suivante. Je suis sûr que je fais quelque chose de fondamentalement faux si la commande expect ne fonctionne pas dans Expect, mais je ne sais pas quoi. C'est comme s'il ne pouvait lire aucune sortie de terminal, mais les commandes d'envoi fonctionnent parfaitement, donc je sais que c'est connecté. Quel que soit le programme terminal que j'essaie (telnet, plink, netcat, etc.), tous ont le même problème. L'attente semble vraiment être un outil d'automatisation impressionnant, donc j'apprécierais vraiment toutes les suggestions qui pourraient m'aider à surmonter cela. Je m'attends entièrement à me sentir stupide après avoir reçu la réponse.Les scripts attendus ne peuvent pas correspondre

Répondre

0

Ceci est probablement dû à des problèmes connus avec Expect sur les versions ultérieures de Windows, qui sont malheureusement mal documentées. Attendre peut travailler sur Win7 ou Win8, probablement pas sur Win10. Il fonctionnera généralement mieux sur Windows 32 bits que sur Windows 64 bits.