Comment attendre plusieurs invites correctement

J'ai un script expect dans lequel je suis actuellement à la recherche de plusieurs types d'invite et d'envoyer les commandes en réponse. Je suis conscient de l'expression régulière correspondant à l'aide de "-re", mais j'aimerais savoir de la bonne façon d'atteindre cet objectif.

Par exemple, j'ai ces types d'invite:

[user@hostname ~]#
user@hostname --->
/ >
-bash-3.00$ 
cli>

Est-ce le bon/suffisant expression de détecter tous les ci-dessus?

set multiPrompt "(%|#|cli\>|$|\-\-\-\>)"
expect -re $multiPrompt
send "$someCommand\r"

Aussi, j'ai une liste de commandes, certains d'entre eux provoquent l'invite à changer après ils sont exécutés sur le système distant. En raison du changement dans l'invite de commandes, les commandes restantes ne sont pas envoyés parce que mon script expect est pas en mesure de détecter le changement et effectuer l'action d'envoi.

Ce que je suis en train de faire est de créer un pool de possible invites, de sorte que mon script expect envoie les commandes à travers, sans manquer aucun d'entre eux. Mon approche correcte?

Cela dépend de la chaîne de réponses, vous pouvez vous attendre à côté d'une invite de commandes. Si il y a toujours une invite de venir, .* suffirait.
Otoh, que, ça dépend de ce que les différentes invites et les utilisateurs que vous souhaitez soutenir. Si votre script est uniquement pour l'automatisation de Bill Gates PC à la maison, vous devriez mettre [email protected] dans la regexp. Si vous voulez soutenir toutes les questions, y compris celles que l'utilisateur a modifié librement, vous êtes hors de la chance. Vous ne pouvez pas éventuellement correspondre à ce que. Si vous voulez correspondre à la norme de l'invite de tout de la coquille et du programme dans le monde, bonne chance avec la recherche.

OriginalL'auteur Jenson Jose | 2013-04-26