attendre, d'interagir, puis à nouveau s'attendre à
Il y a plusieurs posts sur le même sujet, mais je n'ai toujours pas capable de faire attendre mon script fonctionne correctement. Mon intention est de tout automatiser, mais laisser entrez le mot de passe pour l'utilisateur. Il y a donc 3 parties du script:
- de connexion automatique
- donner l'interaction de l'utilisateur à entrer le mot de passe
- donner le contrôle de retour de s'Attendre à ce script pour continuer le travail
J'ai donc un script qui va être généré et qui ont 3 les commandes de lecture. La première et la dernière doit être rempli par l'Attends et je voudrais entrer dans mon auto:
#!/bin/ksh
read user?User:
echo "Expect entered the username $user"
read pass?Password:
echo "User entered the password $pass"
read command?"Shell>"
echo "Expect entered the command $command"
Mon script expect:
#!/usr/bin/expect
spawn ./some_script
expect User
send I-am-expect\r
expect Password
interact
expect Shell
send I-am-expect-again
Malheureusement, après j'ai entré le mot de passe, le script n'est pas à continuer et à gauche dans l'interagir en mode:
[root@localhost ~]# ./my-expect
spawn ./some_script
User:I-am-expect
Expect entered the username I-am-expect
Password:i am user
User entered the password i am user
Shell>
Et, enfin, quand je entrer dans quelque chose sur le "Shell" et en appuyant sur [ENTER] s'attendre à des sorties avec l'erreur:
Expect entered the command
expect: spawn id exp4 not open
while executing
"expect Shell"
(file "./my-expect" line 7)
[root@localhost ~]#
Je remercie toute explication ou la résolution de ce problème. Je suis l'aide d'attendre la version 5.45
OriginalL'auteur Petras L | 2015-11-22
Vous devez vous connecter pour publier un commentaire.
Vous pouvez lire (
expect_user
) de l'utilisateur mot de passe par vous-même et puissend
au spawn ed programme. Par exemple:Je remarque ce qui semble être un "escape" pour un crochet, mais pas les autres. Est-ce intentionnel? (à mi-chemin vers le bas)
\[\r\n]"
Le crochet ouvert est spécial (tcl.tk/homme/tcl8.6/TclCmd/Tcl.htm#M11), mais la proximité du support ne l'est pas. Il n'y aurait pas de mal à échapper à la fermer la parenthèse, mais il n'est pas strictement nécessaire.
OriginalL'auteur pynexj
La
interact
devrait être donnée avec de bon état pour les critères de sortie.Le script suivant va exécuter les commandes de l'utilisateur dans le shell
exeCmds.sh
automateCmdsExec.exp
Le script
automateCmdsExec.exp
sera l'adresse de connexion a besoin du script bash et lorsque l'invite arrive, il aura la main sur le contrôle à l'utilisateur.Nous devrions définir les critères de sortie pour le
interact
pour laquelle j'ai utilisé le motproceed
. (Vous pouvez le modifier selon vos besoin).Une fois
interact
correspondait à la paroleproceed
. il sera de retour le contrôle de retour pour le script expect.Pour la démo fin, j'en ai gardé une plus
send
-expect
paire de commande.c'est à dire
Vous pouvez garder votre code ci-dessous la
interact
, ainsi, il peut être exécuté par le script.OriginalL'auteur Dinesh