envoyer: spawn id exp7 pas ouvrir
Lorsque j'essaie d'exécuter autoexpect fichier, j'obtiens une erreur send: spawn id exp7 not open
Voici mon fichier sh.exp
:
#!/usr/bin/expect
# mysql credentials and connection data
db_host='localhost'
db_name='webui_dev'
db_user='root'
db_pass=''
new_db_name='db_2011'
expect <<EOF
log_user 0
spawn mysql -h $db_host -u $db_user -p $db_pass 'create database $new_db_name'
expect "password:"
send "$db_pass\r"
log_user 1
expect eof
EOF
Ne peuvent pas trouver où est l'erreur.
Vous devez vous connecter pour publier un commentaire.
Essayer citant des variables correctement:
Variables qui ne sont pas cités dans les guillemets sont soumis à couper un mot et le nom de chemin d'expansion. Et les variables sous des guillemets simples, ne pas s'étendre. Lire plus à propos de shell citant ici.
Mise à jour: Il semble que vous êtes en train de l'étendre par le biais d'un document ici, mais il serait toujours applicable depuis vos arguments doivent encore être cité en attendre. C'est ce qu'il apparaît comme entrée pour attendre:
C'est la façon dont il semble si vous n'avez pas cité encore:
Mise à JOUR:
La cause du problème est en fait parce que mysql se termine rapidement, sans montrer une invite de mot de passe en raison de l'argument supplémentaire. La solution est d'envoyer la commande manuellement. Il est aussi préférable de simplement exécuter le script en entier comme un script expect, pas un imbriqués les uns pour la moindre confusion
Enregistrer le script en tant qu'attendre de fichier et de l'exécuter avec
expect -f expect_file
.""
autour de l'variables ($db_host
...) ne sont pas nécessaires. (et sont rayés.))send: spawn id exp7 not open while executing "send "\r""
exp_internal 1
au début de votre script et modifier la sortie.expect <<EOF ........EOF
.